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

33

如何从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)的对象


@Ripon\ @Sanu。尝试使用**Iterator remove();**方法。在迭代时从ArrayList中删除匹配的元素。 - Vipul Gulhane
17个回答

0

您可以使用Collections.binarySearch查找元素,然后在返回的索引上调用remove。

请参阅此处的Collections.binarySearch文档: http://docs.oracle.com/javase/1.4.2/docs/api/java/util/Collections.html#binarySearch%28java.util.List,%20java.lang.Object%29

这需要ArrayTest对象实现.equals。您还需要调用Collections.sort对列表进行排序。最后,ArrayTest必须实现Comparable接口,以便二进制搜索能够正确运行。

这是在Java中执行此操作的“正确”方法。如果您只是想快速而肮脏地解决问题,那么您可以遍历元素并删除具有所需属性的元素。


0

这帮助了我:

        card temperaryCardFour = theDeck.get(theDeck.size() - 1);
        theDeck.remove(temperaryCardFour);    

而不是

theDeck.remove(numberNeededRemoved);

我在第一段代码上得到了移除确认,而在第二段上得到了未移除确认。

尝试使用第一段代码替换你的代码,我认为那可能是你的问题所在。

Nathan Nelson


0

简单使用remove()函数。并将要删除的对象作为参数传递。 你可以使用arraylist.remove(obj)来删除。


0

或者您可以使用Java 8的Lambda表达式

test.removeIf(i -> i==2);

它将简单地删除所有满足条件的对象


0

例如,如果有人想要一个简单的字符串列表示例:

 public ArrayList<String> listAfterRemoved(ArrayList<String> arrayList, String toRemove) {

        for (int i = 0; i < arrayList.size(); i++) {
            if (arrayList.get(i).equals(toRemove)) {
                arrayList.remove(toRemove);
            }
        }
        return arrayList;
    }

调用的代码是:

ArrayList<String> arrayList = new ArrayList<>();
        arrayList.add("1");
        arrayList.add("2");
        arrayList.add("3");
        arrayList.add("4");

        System.out.println("Array List before: " + arrayList.toString());
        arrayList = listAfterRemoved(arrayList, "2");
        System.out.println("Array List after : " + arrayList.toString());

enter image description here


0
    ArrayTest obj=new ArrayTest(1);
    test.add(obj);
    ArrayTest obj1=new ArrayTest(2);
    test.add(obj1);
    ArrayTest obj2=new ArrayTest(3);
    test.add(obj2);

    test.remove(object of ArrayTest);

您可以指定如何控制每个对象。


0

当从测试ArrayList中删除ArrayTest(1)时,下面的内容将被使用

test.removeIf(
     (intValue) -> {
         boolean remove = false;
         remove = (intValue == 1);
         if (remove) {
            //Success
         }
         return remove;
      });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接