Удалять дубликаты из ArrayList, когда объекты имеют разные ссылки [дубликаты]

У меня есть проблема в данный момент на моем проекте. У меня есть 1 массив (назовем его БОЛЬШОЙ), который формируется еще тремя массивами (A, B, C) из SQL-запроса каждый, поэтому у меня в основном дублируются элементы (иногда даже один и тот же элемент 3 или более раз) в БОЛЬШОМ массиве .

Моя проблема в том, что я не могу использовать метод .contains(), поскольку ссылки на объекты различаются между ними (даже если некоторые объекты представляют один и тот же «элемент»), а в качестве «первичного ключа» атрибут, который никогда не изменяется внутри каждого item в arraylist — это идентификатор элементов (int). Как я могу удалить повторяющиеся элементы, чтобы я мог получить только один из каждого «элемента»?


person heythatsmekri    schedule 02.07.2014    source источник
comment
Метод contains() не сравнивает ссылки, он использует .equals() для объектов, содержащихся в списке. Вам нужно реализовать equals() и hashcode() в этом классе, как это было предложено @Java Learner.   -  person Ignazio    schedule 02.07.2014


Ответы (2)


Вам необходимо переопределить метод Equals этого класса в соответствии с бизнес-требованиями.

И, конечно же, метод hashcode, потому что если equals переопределен, метод hashcode также должен быть переопределен.

person Ninad Pingale    schedule 02.07.2014

Хорошо объяснили здесь:

Как удалить дубликаты из списка?

В equals проверьте атрибуты id обоих объектов.

person Kasper Ziemianek    schedule 02.07.2014