创建对象(o)的实例并将其添加到Arraylist(arrayList)可以正常工作。但是,删除功能不起作用。
arrayList.add(o); // works
arrayList.remove(o); // does nothing
我错过了什么?
答案 0 :(得分:3)
ArrayList.remove()
看起来像这样:
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;
}
因此,如果您的Object
有默认equals()
,那么这个工作就不行了。所有对象都不同。将equals()
添加到Object
班级。