Мне нужно выяснить, были ли они дубликатами в паре fullName - род занятий, которая должна быть уникальной
Исходя из этого комментария, кажется, что вам на самом деле не важно, какиеPerson
объекты были продублированы, только их было.
В этом случае вы можете использовать anyMatch
:
Collection<Person> input = new ArrayList<>();
Set<List<String>> seen = new HashSet<>();
boolean hasDupes = input.stream()
.anyMatch(p -> !seen.add(List.of(p.fullName, p.occupation)));
Вы можете использовать List
как 'ключ 'для набора, который содержит комбинации fullName
+ occupation
, которые вы уже видели.Если эта комбинация появляется снова, вы немедленно возвращаете true
, в противном случае вы заканчиваете итерацию элементов и возвращаете false
.