📜  Java中的 ArrayList 和 LinkedList remove() 方法及示例

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

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() 方法。详情请看这里。