Java arraylistremove()
我对ArrayList的remove()方法有疑问。我想知道我是否正确使用了它。所以我有一个对象的ArrayList,我想从ArrayList中删除一个特定的对象。bool移除(obj)是正确的使用方法吗?据我所知,remove方法基于equals方法比较对象。如果对象是用户定义的类,并且没有重写equals方法,那么它应该使用==来比较对象,这是比较地址而不是内容?在这种情况下,比较地址而不是内容是合适的,因此remove方法是从ArrayList中删除特定对象的正确方法 我的理解正确吗 据我所知,remove方法基于equals方法比较对象。如果对象是用户定义的类,并且没有重写equals方法,那么它应该使用==来比较对象,这是比较地址而不是内容 如果不重写Java arraylistremove(),java,arraylist,Java,Arraylist,我对ArrayList的remove()方法有疑问。我想知道我是否正确使用了它。所以我有一个对象的ArrayList,我想从ArrayList中删除一个特定的对象。bool移除(obj)是正确的使用方法吗?据我所知,remove方法基于equals方法比较对象。如果对象是用户定义的类,并且没有重写equals方法,那么它应该使用==来比较对象,这是比较地址而不是内容?在这种情况下,比较地址而不是内容是合适的,因此remove方法是从ArrayList中删除特定对象的正确方法 我的理解正确吗 据我
equals()
它将使用类对象中的默认equals
哪一个比较参考
public boolean equals(Object obj) {
return (this == obj);
}
如果您的类不是对象的直接子类,它将使用重写的equals()
例如:
Object
|
|--Animal (overrides `equals()`)
|
|
Human (Doesn't override `equals()`, it will use `Animal`'s version of `equals()` not `Object`'s
如果您知道对象-在迭代时无法使用它,那么这是正确的方法。您将得到一个ConcurrentModificationException
如果要在迭代时删除元素,则需要使用迭代器
final Iterator<Something> listIter = arrayList.iterator();
while(listIter.hasNext()) {
final Something thing = listIter.next();
if(someTest) {
listIter.remove();
}
}
final Iterator listIter=arrayList.Iterator();
while(listIter.hasNext()){
final Something=listIter.next();
如果(某些测试){
listIter.remove();
}
}
您可以试试看;)比较参考地址…@Brian是的,这是真的