介绍
「ArrayList」是 List 界面最常用的实现,所以这里的示例将使用 ArrayList
remove()
方法。
Java 列表 remove()
方法
有两种删除()
方法来从列表中删除元素。
E remove(int index)
:本方法在指定的索引中删除该元素,并返回该元素。后续元素由一个位置向左移动。本方法将‘IndexOutOfBoundsException’丢弃,如果指定的索引不在范围内。如果列表实施程序不支持此操作,则‘UnsupportedOperationException’丢弃boolean remove(Object o)
本方法将删除指定的‘Object’的第一个出现。如果列表不包含该元素,则将保持不变。如果从列表中删除一个元素,则将返回‘true`。如果对象是‘null’和列表不支持‘null’元素,则 [NullPointerception/community/
让我们来看看一些删除( )
方法的例子。
1、在某个索引中删除元素
此示例将探索E remove(int index)
:
1List<String> list = new ArrayList<>();
2
3list.add("A");
4list.add("B");
5list.add("C");
6list.add("C");
7list.add("B");
8list.add("A");
9
10System.out.println(list);
11
12String removedStr = list.remove(1);
13System.out.println(list);
14System.out.println(removedStr);
首先,此代码构建并打印列表:
1[secondary_label Output]
2[A, B, C, C, B, A]
然后,这个代码执行删除(1)
,以删除指数1
中的元素,最后,它打印了新的结果列表,还打印了删除的元素。
1[secondary_label Output]
2[A, C, C, B, A]
3B
在1
指数的B
已被删除。
「IndexOutOfBoundsException」用「remove(int index)」方法
此示例将探索当索引超过列表时的E remove(int index)
:
1List<String> list = new ArrayList<>();
2
3list.add("A");
4
5String removedStr = list.remove(10);
此代码构建一个长度为1
的列表,但是,当代码尝试删除指数为10
的元素时:
1[secondary_label Output]
2Exception in thread "main" java.lang.IndexOutOfBoundsException: Index 10 out of bounds for length 1
3 at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
4 at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
5 at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248)
6 at java.base/java.util.Objects.checkIndex(Objects.java:372)
7 at java.base/java.util.ArrayList.remove(ArrayList.java:535)
8 at com.journaldev.java.ArrayListRemove.main(ArrayListRemove.java:19)
此尝试将IndexOutOfBoundsException
丢弃。
不可更改的列表 remove()
UnsupportedOperationException
示例
使用List.of()
方法创建一个不可变的列表,无法更改。
1List<String> list = List.of("a", "b");
2
3System.out.println(list);
4
5String removedStr = list.remove(1);
6
7System.out.println(removedStr);
首先,此代码构建并打印一个不变的列表:
1[secondary_label Output]
2[a, b]
然后,代码尝试使用删除()
方法来删除指数1
中的元素:
1Exception in thread "main" java.lang.UnsupportedOperationException
2 at java.base/java.util.ImmutableCollections.uoe(ImmutableCollections.java:142)
3 at java.base/java.util.ImmutableCollections$AbstractImmutableList.remove(ImmutableCollections.java:258)
4 at TestRemoveList.main(TestRemoveList.java:12)
此尝试将投放不受支持的操作例外
,如果尝试list.remove(
a)
或list.remove(
b)
,则也将投放不受支持的操作例外
。
4、从列表中删除一个对象
此示例将探索boolean remove(Object o)
:
1List<String> list = new ArrayList<>();
2
3list.add("A");
4list.add("B");
5list.add("C");
6list.add("C");
7list.add("B");
8list.add("A");
9
10System.out.println(list);
11
12boolean isRemoved = list.remove("C");
13System.out.println(list);
14System.out.println(isRemoved);
15
16isRemoved = list.remove("X");
17System.out.println(list);
18System.out.println(isRemoved);
首先,此代码构建并打印列表:
1[secondary_label Output]
2[A, B, C, C, B, A]
然后,这个代码执行删除(
C)
以删除C
的第一个实例,然后,它打印了结果的列表,并打印了操作的布尔值 - true
:
1[secondary_label Output]
2[A, B, C, B, A]
3true
然后,这个代码执行删除(
X)
,但列表中没有X
的实例,列表不会改变。
1[secondary_label Output]
2[A, B, C, B, A]
3false
结论
在本文中,您了解了Java的列表
方法`删除()。
推荐阅读:**
** 参考:**