List<String> lst = new ArrayList<String>();
lst.add("whatever");
lst.remove("whatever");
以下是API中Arraylist Class的remove方法(来自Collection&lt; E&gt;接口的覆盖):
public boolean remove(Object o) {
if (o == null) {
for (int index = 0; index < size; index++)
if (elementData[index] == null) {
fastRemove(index);
return true;
}
} else {
for (int index = 0; index < size; index++)
if (o.equals(elementData[index])) {
fastRemove(index);
return true;
}
}
return false;
}
我认为如果在Collection&lt; E>接口,框架的设计者写public void remove(Object o);
是好的,但他们必须有一定的目的,我不明白。返回布尔值是什么?请告诉我
答案 0 :(得分:5)
在删除的情况下:
它确切地告诉您是否有任何对象已从您的集合中删除,或者不是。
在添加:
的情况下它在collections
Set
中很有用,因为如果新元素添加到集合中它返回true
,如果对象已经在,则返回false
集合。
来自HashSet:
public boolean add(E e) {
return (this.map.put(e, PRESENT) == null);
}
答案 1 :(得分:1)
有时,客户端代码可能不知道要删除的对象是否是集合的一部分。此客户端代码肯定想知道删除操作的效果。因此,设计决定返回一个布尔值。
- 编辑 例如, 假设,两个线程之间共享同步集合。一个填充它,另一个从中删除对象。删除线程想知道删除是否成功。
答案 2 :(得分:0)
remove(o)
返回false。