如何从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;
}
}
Run Code Online (Sandbox Code Playgroud)
如何new ArrayTest(1)从我的删除对象ArrayList<ArrayList>
AVa*_*hev 35
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;
}
Run Code Online (Sandbox Code Playgroud)
Bom*_*mbe 13
通常,可以通过index()和object()以两种方式从ArrayList(或通常任何List)对象中删除remove(int)对象remove(Object).
在此特定方案中:equals(Object)向您的ArrayTest类添加方法.这将允许ArrayList.remove(Object)识别正确的对象.
tmh*_*tmh 11
如果您使用的是Java 8:
test.removeIf(t -> t.i == 1);
Run Code Online (Sandbox Code Playgroud)
Java 8 removeIf在收集接口中有一个方法。对于ArrayList,它具有高级实现(n的顺序)。
要从 arrayList 中删除特定对象,有两种方法。调用arrayList的函数。
arrayList.remove(object);
Run Code Online (Sandbox Code Playgroud)
这将删除您的对象,但在大多数情况下,当 arrayList 包含 UserDefined DataTypes 的项目时,此方法不会为您提供正确的结果。它仅适用于原始数据类型。因为用户想根据对象字段值删除项目,而删除功能无法自动比较。
arrayList.remove(index);
Run Code Online (Sandbox Code Playgroud)
这是完整的例子。我们必须使用 Iterator的remove()方法
import java.util.ArrayList;
import java.util.Iterator;
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);
System.out.println("Before removing size is " + test.size() + " And Element are : " + test);
Iterator<ArrayTest> itr = test.iterator();
while (itr.hasNext()) {
ArrayTest number = itr.next();
if (number.i == 1) {
itr.remove();
}
}
System.out.println("After removing size is " + test.size() + " And Element are :" + test);
}
public ArrayTest(int i) {
this.i = i;
}
@Override
public String toString() {
return "ArrayTest [i=" + i + "]";
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
149507 次 |
| 最近记录: |