Функция addAll дублирует объекты в списке - PullRequest
0 голосов
/ 26 апреля 2019

Моя цель - объединить два списка в один список, но проблема в том, что объекты первого списка дублируются дважды, этот код приведен ниже:

List<Image> unionList = new ArrayList<Image>();

      unionList.addAll(fromImageList);

       unionList.addAll(fromTagList);

, так что объекты fromImageList объединяютсяв два раза.

Ответы [ 2 ]

0 голосов
/ 26 апреля 2019

Когда List<Image> unionList = new ArrayList<Image>(); исключено, создается пустой arrayList.

Когда unionList.addAll(fromImageList); исключено, все изображения из fromImageList добавляются в unionList.

Когда unionList.addAll(fromTagList); исключено, все изображения из fromTagList добавляются в unionList.

ArrayList не предотвращает дублирование. Если вы хотите предотвратить дублирование, вы должны использовать реализацию Set, например, HashSet.

Вы можете сделать следующее

Set<Image> uniqueImages = new HashSet<>();
uniqueImages.addAll(fromImageList);
uniqueImages.addAll(fromTagList);

List<Image> unionList = new ArrayList<>(uniqueImages)
0 голосов
/ 26 апреля 2019

Если вы хотите агрегировать только уникальные изображения, то вам следует использовать Set

Set<Image> uniqueImages = new HashSet<>();

uniqueImages.addAll(fromImageList);

uniqueImages.addAll(fromTagList);

List<Image> unionList = new ArrayList<>(uniqueImages)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...