Java中的ArrayList和LinkedList remove()方法示例
Java中的List接口(由ArrayList和LinkedList实现)提供了remove方法的两个版本。
boolean remove(Object obj) :
它接受要删除的对象。如果找到并删除该元素,则返回true。如果要删除的元素不存在,则返回false。
- 如果要删除的元素存在于给定的列表中,则从给定列表中删除指定元素的首次出现。如果不存在该元素,则该列表不发生变化。
- 删除后,它会将后续元素(如果有的话)向左移动并将它们的索引减1。
它抛出以下异常:
ClassCastException-如果指定元素的类型与此集合不兼容(可选)。
NullPointerException-如果指定元素为null并且此集合不允许null元素(可选)。
UnsupportedOperationException-如果此集合不支持删除操作。
// 一个Java程序来演示列表删除方法的工作方式
// 传递要删除的对象。
import java.util.*;
public class GFG
{
public static void main(String[] args)
{
// 在ArrayList上演示remove
List<String> myAlist = new ArrayList<String>();
myAlist.add("Geeks");
myAlist.add("Practice");
myAlist.add("Quiz");
System.out.println("Original ArrayList : " + myAlist);
myAlist.remove("Quiz");
System.out.println("Modified ArrayList : " + myAlist);
// 在LinkedList上演示remove
List<String> myLlist = new LinkedList<String>();
myLlist.add("Geeks");
myLlist.add("Practice");
myLlist.add("Quiz");
System.out.println("Original LinkedList : " + myLlist);
myLlist.remove("Quiz");
System.out.println("Modified LinkedList : " + myLlist);
}
}
输出
Original ArrayList : [Geeks, Practice, Quiz]
Modified ArrayList : [Geeks, Practice]
Original LinkedList : [Geeks, Practice, Quiz]
Modified LinkedList : [Geeks, Practice]
对象remove(int index) :
它会删除给定索引处的元素。它返回被删除的对象。
- 删除后,它会将后续元素(如果有的话)向左移动并将它们的索引减1。
- 如果列表包含int类型,则在传递int时调用此方法(有关详细信息,请参阅此处)
如果索引越界,则会抛出IndexOutOfBoundsException异常,
// 一个Java程序来演示列表删除方法的工作方式
// 传递索引。
import java.util.*;
public class GFG
{
public static void main(String[] args)
{
// 在ArrayList上演示remove
List<String> myAlist = new ArrayList<String>();
myAlist.add("Geeks");
myAlist.add("Practice");
myAlist.add("Quiz");
System.out.println("Original ArrayList : " + myAlist);
myAlist.remove("Quiz");
System.out.println("Modified ArrayList : " + myAlist);
// 在LinkedList上演示remove
List<String> myLlist = new LinkedList<String>();
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]
原始 ArrayList: [Geeks, Practice, Quiz]
修改后的 ArrayList: [Geeks, Practice]
原始 LinkedList: [Geeks, Practice, Quiz]
修改后的 LinkedList: [Geeks, Practice]
重要提示:
- 注意,数组没有直接删除元素的方法,因为数组的大小是固定的。因此,数组中没有 add()、remove() 和 delete() 等方法。但是在像 ArrayList 和 HashSet 这样的集合中,我们有这些方法。因此,最好将数组转换为 ArrayList 或者在需要这些方法时从一开始就使用 ArrayList。
- 不建议在迭代元素时使用 list 接口的 remove()。这可能导致 ConcurrentModificationException 异常(请参考此处的一个带有此异常的示例程序)。在迭代元素时,建议使用 Iterator.remove() 方法。请参阅此处以了解详细信息。
极客教程