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



假设我定义了一个列表:

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个"王"字符串对象,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函数会识别出那里有重复的对象吗,而不是试图从卡片中删除所有出现的"国王"、"王后"one_answers"王子",所以我会留下一个空列表(卡片(吗?

最终的名单是{"国王"、"王子"}还是空名单{}?

如Java文档中所述:

removeAll(集合c(

删除包含在中的此集合的所有元素指定的集合(可选操作(。本次通话后返回,则该集合将不包含与指定的集合。

最新更新