我在official java docs中找到了下一个代码:
collection.removeAll(Collections.singleton(element));
我无法弄清楚这种方法的优点。为什么不通常删除元素?
collection.remove(element);
谢谢!
答案 0 :(得分:8)
前者删除集合中所有出现的元素,后者仅删除第一次出现。
答案 1 :(得分:5)
度Acc。到文档:
考虑以下习惯用法从Collection,c
中删除指定元素e的所有实例
collection.removeAll(Collections.singleton(element));
while collection.remove(element);
从此集合中删除指定元素的单个实例
因此,要删除所有实例,您必须使用后一种方法的循环结构。而第一个就是一线工作。
答案 2 :(得分:3)
来自API
删除(对象o)
从此集合中移除指定元素的单个实例(如果存在)
和
removeAll(Collection c)
删除同样包含在指定集合中的所有此集合的元素
因此,如果您的集合中有多个要删除的元素,则必须多次执行collection.remove(element),但只执行一次removeAll。由于removeAll将一个集合作为参数,Collection.singleton可以为您提供一种只用一个参数创建集合的便捷方法。
答案 3 :(得分:0)
测试时(单元测试)。 Collections.singleton
是将您的主题变为集合的单行方式。
另一种选择是两条线而不是繁重的。