如何为 Java List 和 ListArray 使用 remove() 方法

介绍

「ArrayList」是 List 界面最常用的实现,所以这里的示例将使用 ArrayList remove() 方法。

Java 列表 remove() 方法

有两种删除()方法来从列表中删除元素。

  1. E remove(int index):本方法在指定的索引中删除该元素,并返回该元素。后续元素由一个位置向左移动。本方法将‘IndexOutOfBoundsException’丢弃,如果指定的索引不在范围内。如果列表实施程序不支持此操作,则‘UnsupportedOperationException’丢弃
  2. 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的列表方法`删除()。

推荐阅读:**

** 参考:**

Published At
Categories with 技术
Tagged with
comments powered by Disqus