如何从Java中的 ArrayList 中删除元素?
ArrayList 是集合框架的一部分,存在于Java.util 包中。它为我们提供了Java中的动态数组。虽然,它可能比标准数组慢,但在需要对数组进行大量操作的程序中很有帮助。此类位于Java.util包中。随着Java版本的引入和升级,新的方法正在可用,就像我们从 Java8 中看到的感知 lambda 表达式和流概念在它之前不可用一样,因为它是在Java版本 8 中引入的,所以我们有更多的方法来操作 Arraylist执行操作。在这里,我们将讨论一种从 ArrayList 中删除元素的方法。
从 ArrayList 中删除元素时,我们可以通过索引或通过 ArrayList 中的值删除元素。我们将通过一个干净的Java程序进行解释来讨论这两种方式。
方法:
有3 种方法可以从 ArrayList 中删除元素,如下所示:
- 按索引使用 remove() 方法(默认)
- 按值使用 remove() 方法
- 在迭代器上使用 remove() 方法
Note: It is not recommended to use ArrayList.remove() when iterating over elements.
方法一:通过索引使用 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]
Note: It is not recommended to use ArrayList.remove() when iterating over elements.
方法 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]