ArrayList.removeAll (Collection <>) заботится о дубликатах? - PullRequest
0 голосов
/ 26 февраля 2020

Допустим, я определил список:

List<String> cards = new ArrayList<>();
cards.add("king");
cards.add("queen");
cards.add("king");
cards.add("king");
cards.add("prince");
cards.add("queen");
cards.add("prince");

Итак, у этого ArrayList есть 3 "королевских" объекта String, 2 "королева" и 2 "принц". Пока все хорошо.

Теперь я хочу определить новый список:

List<String> toRemove = new ArrayList<>();
toRemove.add("king");
toRemove.add("king");
toRemove.add("queen");
toRemove.add("queen");
toRemove.add("prince");

Итак, у этого ArrayList есть 2 "короля", 2 "ферзя" и 1 "принц". Теперь, если я сделаю:

cards.removeAll(toRemove);

Будет ли это учитывать дубликаты объектов?

Если вы вычтите список toRemove из списка карт, у вас останется 1 "король" 0 "королева" и 1 "принц". Правильно?

Но будет ли функция removeAll распознавать наличие дублированных объектов и не будет пытаться удалить все вхождения "king", "queen" и "prince" с карт, поэтому у меня останется пустой список (карточки)?

будет ли окончательный список {"король", "принц"} или пустой список {}?

1 Ответ

1 голос
/ 26 февраля 2020

Как указано в Java документах :

removeAll (Коллекция c)

Удаляет все это элементы коллекции, которые также содержатся в указанной коллекции (необязательная операция). После возврата этого вызова эта коллекция не будет содержать общих элементов с указанной коллекцией.

...