ArrayList.removeAll(Collection<>) 关心重复项吗?

does ArrayList.removeAll(Collection<>) cares about duplicates?

假设我定义了一个列表:

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个"king"个String对象,2个"queen",2个"prince"。 到目前为止一切顺利。

现在我想定义一个新列表:

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

所以这个ArrayList有2个"king"、2个"queen"和1个"prince"。 现在,如果我愿意:

cards.removeAll(toRemove);

这会考虑重复的对象吗?

如果从 cards 列表中减去 toRemove 列表,应该剩下 1 "king"、0 "queen" 和 1 "prince"。对吗?

但是 removeAll 函数是否会识别那里有重复的对象,而不是尝试从卡片中删除所有出现的 "king"、"queen" 和 "prince",所以我会剩下一个空列表(卡片)?

最终列表是{"king"、"prince"}还是空列表{}?

Java docs 中所述:

removeAll(Collection c)

Removes all of this collection's elements that are also contained in the specified collection (optional operation). After this call returns, this collection will contain no elements in common with the specified collection.