为什么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
的时间?