Java arraylistremove()

Java arraylistremove(),java,arraylist,Java,Arraylist,我对ArrayList的remove()方法有疑问。我想知道我是否正确使用了它。所以我有一个对象的ArrayList,我想从ArrayList中删除一个特定的对象。bool移除(obj)是正确的使用方法吗?据我所知,remove方法基于equals方法比较对象。如果对象是用户定义的类,并且没有重写equals方法,那么它应该使用==来比较对象,这是比较地址而不是内容?在这种情况下,比较地址而不是内容是合适的,因此remove方法是从ArrayList中删除特定对象的正确方法 我的理解正确吗 据我

我对ArrayList的remove()方法有疑问。我想知道我是否正确使用了它。所以我有一个对象的ArrayList,我想从ArrayList中删除一个特定的对象。bool移除(obj)是正确的使用方法吗?据我所知,remove方法基于equals方法比较对象。如果对象是用户定义的类,并且没有重写equals方法,那么它应该使用==来比较对象,这是比较地址而不是内容?在这种情况下,比较地址而不是内容是合适的,因此remove方法是从ArrayList中删除特定对象的正确方法

我的理解正确吗

据我所知,remove方法基于equals方法比较对象。如果对象是用户定义的类,并且没有重写equals方法,那么它应该使用==来比较对象,这是比较地址而不是内容

如果不重写
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是的,这是真的