📜  如何从Java中的 ArrayList 中删除元素?

📅  最后修改于: 2022-05-13 01:55:24.517000             🧑  作者: Mango

如何从Java中的 ArrayList 中删除元素?

ArrayList 是集合框架的一部分,存在于Java.util 包中。它为我们提供了Java中的动态数组。虽然,它可能比标准数组慢,但在需要对数组进行大量操作的程序中很有帮助。此类位于Java.util包中。随着Java版本的引入和升级,新的方法正在可用,就像我们从 Java8 中看到的感知 lambda 表达式和流概念在它之前不可用一样,因为它是在Java版本 8 中引入的,所以我们有更多的方法来操作 Arraylist执行操作。在这里,我们将讨论一种从 ArrayList 中删除元素的方法。

从 ArrayList 中删除元素时,我们可以通过索引或通过 ArrayList 中的值删除元素。我们将通过一个干净的Java程序进行解释来讨论这两种方式。

方法:

3 种方法可以从 ArrayList 中删除元素,如下所示:

  1. 按索引使用 remove() 方法(默认)
  2. 按值使用 remove() 方法
  3. 在迭代器上使用 remove() 方法

方法一:通过索引使用 remove() 方法

一旦我们对数据结构使用任何方法,它就是一个默认方法,它基本上只对索引进行操作,所以每当我们使用 remove() 方法时,我们基本上是从 ArrayList 的索引中删除元素。

ArrayList 类提供了两个重载的 remove() 方法。

  • remove(int index):接受要移除的对象的索引
  • remove(Object obj):接受要移除的对象

让我们在下面提供的示例的帮助下弄清楚如下:

例子:

Java
// Java program to Remove Elements from ArrayList
// Using remove() method by indices
 
// Importing required classes
import java.util.ArrayList;
import java.util.List;
 
// Main class
public class GFG {
    // Main driver method
    public static void main(String[] args)
    {
        // Creating an object of List interface with
        // reference to ArrayList class
        List al = new ArrayList<>();
 
        // Adding elements to our ArrayList
        // using add() method
        al.add(10);
        al.add(20);
        al.add(30);
        al.add(1);
        al.add(2);
 
        // Printing the current ArrayList
        System.out.println(al);
 
        // This makes a call to remove(int) and
        // removes element 20
        al.remove(1);
 
        // Now element 30 is moved one position back
        // So element 30 is removed this time
        al.remove(1);
 
        // Printing the updated ArrayList
        System.out.println(al);
    }
}


Java
// Java program to Remove Elements from ArrayList
// Using remove() method by values
 
// Importing required classes
import java.util.ArrayList;
import java.util.List;
 
// Main class
public class GFG {
    // Main driver method
    public static void main(String[] args)
    {
        // Creating an object of List interface with
        // reference to ArrayList
        List al = new ArrayList<>();
 
        // Adding elements to ArrayList class
        // using add() method
        al.add(10);
        al.add(20);
        al.add(30);
        al.add(1);
        al.add(2);
 
        // Printing the current ArrayList
        System.out.println(al);
 
        // This makes a call to remove(Object) and
        // removes element 1
        al.remove(new Integer(1));
 
        // This makes a call to remove(Object) and
        // removes element 2
        al.remove(new Integer(2));
 
        // Printing the modified ArrayList
        System.out.println(al);
    }
}


Java
// Java program to demonstrate working of
// Iterator.remove() on an integer arraylist
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
 
public class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
        // Creating an ArrayList
        List al = new ArrayList<>();
 
        // Adding elements to our ArrayList
        // using add() method
        al.add(10);
        al.add(20);
        al.add(30);
        al.add(1);
        al.add(2);
 
        // Printing the current ArrayList
        System.out.println(al);
 
        // Creating iterator object
        Iterator itr = al.iterator();
 
        // Holds true till there is single element
        // remaining in the object
        while (itr.hasNext()) {
 
            // Remove elements smaller than 10 using
            // Iterator.remove()
            int x = (Integer)itr.next();
            if (x < 10)
                itr.remove();
        }
 
        // Printing the updated ArrayList
        System.out.print(al);
    }
}


输出
[10, 20, 30, 1, 2]
[10, 1, 2]

现在我们已经看到通过上面的索引删除 ArrayList 中的元素,现在让我们看看传递的参数被认为是一个索引。如何按值删除元素。

方法 2:按值使用 remove() 方法

例子:

Java

// Java program to Remove Elements from ArrayList
// Using remove() method by values
 
// Importing required classes
import java.util.ArrayList;
import java.util.List;
 
// Main class
public class GFG {
    // Main driver method
    public static void main(String[] args)
    {
        // Creating an object of List interface with
        // reference to ArrayList
        List al = new ArrayList<>();
 
        // Adding elements to ArrayList class
        // using add() method
        al.add(10);
        al.add(20);
        al.add(30);
        al.add(1);
        al.add(2);
 
        // Printing the current ArrayList
        System.out.println(al);
 
        // This makes a call to remove(Object) and
        // removes element 1
        al.remove(new Integer(1));
 
        // This makes a call to remove(Object) and
        // removes element 2
        al.remove(new Integer(2));
 
        // Printing the modified ArrayList
        System.out.println(al);
    }
}

输出 :

[10, 20, 30,1 ,2]
[10, 20, 30]

方法 3:使用 Iterator.remove() 方法

这可能会导致 ConcurrentModificationException 迭代元素时,建议使用 Iterator.remove() 方法。

例子:

Java

// Java program to demonstrate working of
// Iterator.remove() on an integer arraylist
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
 
public class GFG {
 
    // Main driver method
    public static void main(String[] args)
    {
        // Creating an ArrayList
        List al = new ArrayList<>();
 
        // Adding elements to our ArrayList
        // using add() method
        al.add(10);
        al.add(20);
        al.add(30);
        al.add(1);
        al.add(2);
 
        // Printing the current ArrayList
        System.out.println(al);
 
        // Creating iterator object
        Iterator itr = al.iterator();
 
        // Holds true till there is single element
        // remaining in the object
        while (itr.hasNext()) {
 
            // Remove elements smaller than 10 using
            // Iterator.remove()
            int x = (Integer)itr.next();
            if (x < 10)
                itr.remove();
        }
 
        // Printing the updated ArrayList
        System.out.print(al);
    }
}
输出
[10, 20, 30, 1, 2]
[10, 20, 30]