4

我在官方 java 文档中找到了下一个代码:

collection.removeAll(Collections.singleton(element));

我无法弄清楚这种方法的优点。为什么不删除通常的元素?

collection.remove(element);

谢谢!

4

4 回答 4

8

前者删除集合中所有出现的元素,后者仅删除第一次出现的元素。

于 2013-02-07T12:24:06.580 回答
5

会计。到文档:

考虑以下习惯用法以从集合 c 中删除指定元素 e 的所有实例

collection.removeAll(Collections.singleton(element));

whilecollection.remove(element);从此集合中删除指定元素的单个实例

因此,要删除所有实例,您必须使用后一种方法的循环构造。而第一个它只是一个线工作。

于 2013-02-07T12:24:40.153 回答
3

API

remove(Object o)
从此集合中移除指定元素的单个实例(如果存在)

和:

removeAll(Collection c)
删除该集合的所有元素,这些元素也包含在指定集合中

因此,如果您的集合中多次出现您要删除的元素,则必须执行 collection.remove(element) 多次,但 removeAll 只执行一次。由于 removeAll 将集合作为参数,Collection.singleton 可以为您提供一种方便的方法来创建只有一个参数的集合。

于 2013-02-07T12:26:58.707 回答
0

测试时(单元测试)。Collections.singleton是一种将您的主题变成集合的单行方式。另一种方法是两条线,并不繁琐。

于 2013-02-07T12:27:31.847 回答