4

创建对象 (o) 的实例并将其添加到 Arraylist (arrayList) 工作正常。但是,删除功能不起作用。

arrayList.add(o); // works
arrayList.remove(o); // does nothing

我错过了什么?

4

1 回答 1

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有 default equals(),那么这不起作用。所有对象都是不同的。添加equals()到您的Object班级。

于 2013-11-14T17:44:55.537 回答