Il codice dovrebbe essere ripetuto su tutti gli elementi. Se si desidera assicurarsi che non vi siano duplicati metodo semplice come
public static <T> boolean containsUnique(List<T> list){
Set<T> set = new HashSet<>();
for (T t: list){
if (!set.add(t))
return false;
}
return true;
}
sarebbe più efficiente.
Questo metodo potrebbe anche essere riscritta come (supponendo flussi non paralleli e ambiente thread-safe)
public static <T> boolean containsUnique(List<T> list){
Set<T> set = new HashSet<>();
return list.stream().allMatch(t -> set.add(t));
}
o come @Holger menzionato in commento
public static <T> boolean containsUnique(List<T> list){
return list.stream().allMatch(new HashSet<>()::add);
}
se non sei interessato a sapere quali sono questi duplicati, allora è il modo migliore !! –