如何从ArrayList中删除特定对象?假设我有一个如下的类:
import java.util.ArrayList;
public class ArrayTest {
int i;
public static void main(String args[]){
ArrayList<ArrayTest> test=new ArrayList<ArrayTest>();
ArrayTest obj;
obj=new ArrayTest(1);
test.add(obj);
obj=new ArrayTest(2);
test.add(obj);
obj=new ArrayTest(3);
test.add(obj);
}
public ArrayTest(int i){
this.i=i;
}
}
如何从ArrayList<ArrayList>
中删除带有new ArrayTest(1)
的对象
发布于 2011-12-15 21:26:23
ArrayList
根据equals(Object obj)
方法删除对象。所以你应该正确地实现这个方法。类似于:
public boolean equals(Object obj) {
if (obj == null) return false;
if (obj == this) return true;
if (!(obj instanceof ArrayTest)) return false;
ArrayTest o = (ArrayTest) obj;
return o.i == this.i;
}
或
public boolean equals(Object obj) {
if (obj instanceof ArrayTest) {
ArrayTest o = (ArrayTest) obj;
return o.i == this.i;
}
return false;
}
发布于 2018-01-25 22:10:11
如果您使用的是Java 8:
test.removeIf(t -> t.i == 1);
Java8在集合接口中有一个removeIf
方法。对于ArrayList,它有一个高级实现(n阶)。
发布于 2011-12-15 21:27:22
通常,可以通过两种方式从ArrayList
(或任何List
)中删除对象,即按索引(remove(int)
)和按对象(remove(Object)
。
在这个特定的场景中:向ArrayTest
类添加一个equals(Object)
方法。这将使ArrayList.remove(Object)
能够识别正确的对象。
https://stackoverflow.com/questions/8520808
复制相似问题