为什么java.util.Collection.remove()返回布尔值?

为什么java.util.Collection.remove()返回布尔值?,java,collections,Java,Collections,有没有关于调用方何时可以使用从返回的值的真实示例 我很高兴该方法返回一个布尔值,但我很难想象结果对调用方有用的情况。在集合中找不到传递给它的对象时返回false 这听起来对我来说相当有用,尤其是如果你希望这个对象在那里——一旦被移除,就不可能确认它以前在那里。调用remove()是发现它不存在的最后机会。正如javadoc所说 从该集合中删除指定元素的单个实例(如果存在)(可选操作) 集合可能包含多个相等的对象,因为集合不一定是集合 因此,一个用例可能是删除与remove参数相等的对象的所有实例

有没有关于调用方何时可以使用从返回的值的真实示例

我很高兴该方法返回一个布尔值,但我很难想象结果对调用方有用的情况。

在集合中找不到传递给它的对象时返回
false

这听起来对我来说相当有用,尤其是如果你希望这个对象在那里——一旦被移除,就不可能确认它以前在那里。调用
remove()
是发现它不存在的最后机会。

正如javadoc所说

从该集合中删除指定元素的单个实例(如果存在)(可选操作)

集合可能包含多个相等的对象,因为集合不一定是集合

因此,一个用例可能是删除与remove参数相等的对象的所有实例

while(col.remove(anObject));
请记住,javadoc还说:

更正式地说,删除元素e,使得(o==null?e==null:o.equals(e))

因此,如果您得到一个可能包含空值的集合,并且您只想处理“真实”对象,那么您可以使这段代码变得更简单

for(Object obj : col) {
    if(obj != null){
        doSomethingWithObject(obj);
    }
}
首先删除
null
值:

while(col.remove(null));

for(Object obj : col) {
    doSomethingWithObject(obj); 
}

或者,如果某个对象包含在
集合中,您可能需要取消注册该对象,但如果有人试图删除一个一开始就不存在的对象,这不是问题。@chrylis是对的。无论需要知道的原因是什么,您只能在调用
remove()
时找到,最简单的用法是执行检查,
if(Collection.remove(Obj)){do some operation;}
与其他函数类似。这样可以节省检查
包含
然后调用
remove
的时间?