2015-11-24 2 views

ответ

1

Лучшим вариантом может быть реализация equals и hashCode, если идентификация и равенство для данного конкретного типа основаны на значениях этих полей, о которых вы беспокоитесь.

Таким образом, вы можете построить набор этих объектов, которые по определению не будут содержать повторяющиеся экземпляры.

Если это невозможно (например, если у вас нет доступа к источнику этого класса), вы можете использовать anyMatch с предикатом (работает только в Java 8):

return list.stream().anyMatch(element -> element.getField().equals(someValue)); 

Если вы заботитесь о большем количестве полей, вы также можете включить их в предикат.

В Java < = 7, вам придется перебирать значения:

boolean contains = false; 
Iterator<MyObject> = list.iterator(); 
while(iterator.hasNext() && !contains) { 
    contains = iterator.next().getField().equals(someValue); 
} 

return contains; 
+0

Это решение сработало для меня. – Sujay

0

перезапись равна (объект Object) метод вашего класса. Включите obj в класс yoir и проверьте свою определенную заявку.

Затем вставьте все в комплект. Там не будет дубликатов в наборе коллекции.

Смежные вопросы