Java中的 ArrayList 和 LinkedList remove() 方法及示例
Java中的List接口(由ArrayList和LinkedList实现)提供了两个版本的remove方法。
布尔删除(对象 obj):
它接受要删除的对象。如果找到并删除该元素,则返回 true。如果要删除的元素不存在,则返回 false。
- 如果元素存在,则从给定列表中删除第一次出现的指定元素。如果元素不存在,则不更改给定列表。
- 删除后,它将后续元素(如果有)向左移动并将它们的索引减少 1。
它抛出以下异常
ClassCastException – 如果指定元素的类型与此集合不兼容
(选修的)。
NullPointerException – 如果指定元素为 null 并且此集合不允许
空元素(可选)。
UnsupportedOperationException – 如果此集合不支持删除操作
Java
// A Java program to demonstrate working of list remove
// when Object to be removed is passed.
import java.util.*;
public class GFG
{
public static void main(String[] args)
{
// Demonstrating remove on ArrayList
List myAlist = new ArrayList();
myAlist.add("Geeks");
myAlist.add("Practice");
myAlist.add("Quiz");
System.out.println("Original ArrayList : " + myAlist);
myAlist.remove("Quiz");
System.out.println("Modified ArrayList : " + myAlist);
// Demonstrating remove on LinkedList
List myLlist = new LinkedList();
myLlist.add("Geeks");
myLlist.add("Practice");
myLlist.add("Quiz");
System.out.println("Original LinkedList : " + myLlist);
myLlist.remove("Quiz");
System.out.println("Modified LinkedList : " + myLlist);
}
}
Java
// A Java program to demonstrate working of list remove
// when index is passed.
import java.util.*;
public class GFG
{
public static void main(String[] args)
{
// Demonstrating remove on ArrayList
List myAlist = new ArrayList();
myAlist.add("Geeks");
myAlist.add("Practice");
myAlist.add("Quiz");
System.out.println("Original ArrayList : " + myAlist);
myAlist.remove("Quiz");
System.out.println("Modified ArrayList : " + myAlist);
// Demonstrating remove on LinkedList
List myLlist = new LinkedList();
myLlist.add("Geeks");
myLlist.add("Practice");
myLlist.add("Quiz");
System.out.println("Original LinkedList : " + myLlist);
myLlist.remove(2);
System.out.println("Modified LinkedList : " + myLlist);
}
}
输出
Original ArrayList : [Geeks, Practice, Quiz]
Modified ArrayList : [Geeks, Practice]
Original LinkedList : [Geeks, Practice, Quiz]
Modified LinkedList : [Geeks, Practice]
对象删除(int index):
它删除给定索引处的元素。它返回被移除的对象。
- 删除后,它将后续元素(如果有)向左移动并将它们的索引减少 1。
- 如果列表包含 int 类型,则在传递 int 时调用此方法(详情请参阅此)
如果索引超出范围,则抛出 IndexOutOfBoundsException,
Java
// A Java program to demonstrate working of list remove
// when index is passed.
import java.util.*;
public class GFG
{
public static void main(String[] args)
{
// Demonstrating remove on ArrayList
List myAlist = new ArrayList();
myAlist.add("Geeks");
myAlist.add("Practice");
myAlist.add("Quiz");
System.out.println("Original ArrayList : " + myAlist);
myAlist.remove("Quiz");
System.out.println("Modified ArrayList : " + myAlist);
// Demonstrating remove on LinkedList
List myLlist = new LinkedList();
myLlist.add("Geeks");
myLlist.add("Practice");
myLlist.add("Quiz");
System.out.println("Original LinkedList : " + myLlist);
myLlist.remove(2);
System.out.println("Modified LinkedList : " + myLlist);
}
}
输出
Original ArrayList : [Geeks, Practice, Quiz]
Modified ArrayList : [Geeks, Practice]
Original LinkedList : [Geeks, Practice, Quiz]
Modified LinkedList : [Geeks, Practice]
要点:
- 请注意,由于数组的大小是固定的,因此无法直接删除数组中的元素。所以没有像 add()、remove()、delete() 这样的方法。但是在像 ArrayList 和 Hashset 这样的 Collection 中,我们有这些方法。因此,当我们需要这些方法时,最好将数组转换为 ArrayList 或从头开始使用 Arraylist。
- 迭代元素时不建议使用列表接口的 remove()。这可能会导致 ConcurrentModificationException(请参阅此以获取具有此异常的示例程序)。迭代元素时,推荐使用 Iterator.remove() 方法。详情请看这里。