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 の方法でも活ける。