如何从Java中的ArrayList中删除特定对象?

sAa*_*aNu 22 java arraylist

如何从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的顺序)。


Ama*_*yal 6

要从 arrayList 中删除特定对象,有两种方法。调用arrayList的函数。

  1. 根据对象删除。
arrayList.remove(object);
Run Code Online (Sandbox Code Playgroud)

这将删除您的对象,但在大多数情况下,当 arrayList 包含 UserDefined DataTypes 的项目时,此方法不会为您提供正确的结果。它仅适用于原始数据类型。因为用户想根据对象字段值删除项目,而删除功能无法自动比较。

  1. 根据arrayList 的指定索引位置进行删除。从 arrayList 中删除任何项目或对象的最佳方法。首先,找到要删除的项目的索引。然后调用这个arrayList 方法,这个方法在索引的基础上删除项目。它会给出正确的结果。
arrayList.remove(index);  
Run Code Online (Sandbox Code Playgroud)


Vip*_*ane 6

这是完整的例子。我们必须使用 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)

工作演示屏幕