Java List remove()方法– ArrayList remove()

时间:2020-02-23 14:36:32  来源:igfitidea点击:

Java List remove()方法用于从列表中删除元素。
ArrayList是List接口使用最广泛的实现,因此此处的示例将使用ArrayList remove()方法。

Java列表remove()方法

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

  • E remove(int index):此方法删除指定索引处的元素并返回它。
    随后的元素向左移动一位。
    如果指定的索引超出范围,则此方法抛出IndexOutOfBoundsException
    如果List实现不支持此操作,则抛出UnsupportedOperationException。

  • boolean remove(Object o):此方法删除指定对象的第一次出现。
    如果列表不包含给定的元素,则它保持不变。
    如果从列表中删除一个元素,则此方法返回" true",否则返回" false"。
    如果对象为null,并且list不支持null元素,则抛出NullPointerException。
    如果列表实现不支持此方法,则抛出UnsupportedOperationException。

列出remove()方法示例

让我们看一下remove()方法的一些示例。

1.删除给定索引的元素

List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
list.add("C");
list.add("B");
list.add("A");
System.out.println(list);

String removedStr = list.remove(1);
System.out.println(list);
System.out.println(removedStr);

输出:

[A, B, C, C, B, A]
[A, C, C, B, A]
B

2. IndexOutOfBoundsException与remove(int index)方法

List<String> list = new ArrayList<>();
list.add("A");
String removedStr = list.remove(10);

异常输出:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index 10 out of bounds for length 1
	at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
	at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
	at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248)
	at java.base/java.util.Objects.checkIndex(Objects.java:372)
	at java.base/java.util.ArrayList.remove(ArrayList.java:535)
	at com.theitroad.java.ArrayListRemove.main(ArrayListRemove.java:19)

3.不可修改列表remove()UnsupportedOperationException示例

List.of()方法创建一个不可修改的列表,因此使用remove()方法将引发UnsupportedOperationException。

jshell> List<String> list = List.of("a", "b");
list ==> [a, b]

jshell> list.remove(1);
|  Exception java.lang.UnsupportedOperationException
|        at ImmutableCollections.uoe (ImmutableCollections.java:72)
|        at ImmutableCollections$AbstractImmutableList.remove (ImmutableCollections.java:108)
|        at (#64:1)

jshell> list.remove("a");
|  Exception java.lang.UnsupportedOperationException
|        at ImmutableCollections.uoe (ImmutableCollections.java:72)
|        at ImmutableCollections$AbstractImmutableCollection.remove (ImmutableCollections.java:79)
|        at (#65:1)

jshell>

4.从列表中删除一个对象

List<String> list = new ArrayList<>();
list.add("A");
list.add("B");
list.add("C");
list.add("C");
list.add("B");
list.add("A");
System.out.println(list);

boolean isRemoved = list.remove("C");
System.out.println(list);
System.out.println(isRemoved);

isRemoved = list.remove("X");
System.out.println(list);
System.out.println(isRemoved);

输出:

[A, B, C, C, B, A]
[A, B, C, B, A]
true
[A, B, C, B, A]
false