In java 8, what\'s the best way to check if a List contains any duplicate?
My idea was something like:
list.size() != list.stream().distinct().count(
I used the following:
1. return list.size() == new HashSet<>(list).size();
.
I'm not sure how it compares to:
2. return list.size() == list.stream().distinct().count();
and
3. return list.stream().sequential().allMatch(new HashSet<>()::add);
in terms of performance.
The last one (#3) has possibility to handle not only collections (e.g. lists), but also streams (without explicitly collecting them).
Upd.: The last one (#3) seems to be the best not only because it can handle pure streams, but also because it stops on the first duplicate (while #1 and #2 always iterate till the end) — as @Pshemo said in comment.