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

时间:2013-09-19 12:52:17

标签: java collections

是否有任何关于调用者何时可以使用Collection.remove()返回的值的真实示例?

我很高兴该方法返回一个布尔值,但是当结果对调用者有用时,我很难想到一个案例。

2 个答案:

答案 0 :(得分:6)

当传递给它的对象在集合中找不到 时,

Collection.remove()会返回false

这对我来说听起来非常有用,特别是如果你期望对象在那里 - 一旦删除它就不可能确认它以前是。对remove()的调用是发现它不存在的最后机会。

答案 1 :(得分:4)

正如javadoc所说

  

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

该集合可能包含多个相同的对象,因为集合不一定是Set。

所以一个用例可能是删除一个等于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); 
}