List の要素が全て同じ値かどうか

List の要素が全て同じ値かどうかをチェックするのに、Stream allMatch を使う方法がある。

List<T> list;

T は、String など、equalsメソッドがちゃんと実装されてる型

boolean res = list.isEmpty() || list.stream().allMatch(list.get(0)::equals);

でもこれには落とし穴があり、List の先頭、get(0) が、null だったら
NullPointerException になってしまう。

だから List → Setに変換してサイズが1以下であるかのチェックにした方が安全だ。

boolean res = new HashSet<>(list).size() <= 1;

では、Stream の allMatch でもNULL比較ができるようにすればいいじゃないかと、
java.util.Objects の Objects.equals(a, b) を使う。

boolean res = list.isEmpty() || list.stream().allMatch(e->Objects.equals(list.get(0), e));

これなら、allMatch の方法でも活ける。