Как использовать методы remove() для Java List и ListArray
Введение
Метод Java List remove()
используется для удаления элементов из списка. ArrayList
— это наиболее широко используемая реализация интерфейса List, поэтому в приведенных здесь примерах будут использоваться методы ArrayList
remove()
.
Методы удаления списка Java()
Существует два метода remove()
для удаления элементов из списка.
E remove(int index)
: этот метод удаляет элемент с указанным индексом и возвращает его. Последующие элементы сдвигаются влево на одну позицию. Этот метод генерируетIndexOutOfBoundsException
, если указанный индекс выходит за пределы допустимого диапазона. Если реализация списка не поддерживает эту операцию, генерируетсяUnsupportedOperationException
.boolean remove(Object o)
Этот метод удаляет первое вхождение указанногоObject
. Если в списке нет заданного элемента, он остается неизменным. Этот метод возвращаетtrue
, если элемент удален из списка, иначеfalse
. Если объект имеет значениеnull
и список не поддерживает элементыnull
, генерируется исключение NullPointerException.UnsupportedOperationException
возникает, если реализация списка не поддерживает этот метод.
Давайте рассмотрим несколько примеров методов remove()
.
1. Удалить элемент по заданному индексу
В этом примере рассматривается E remove(int index)
:
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);
Во-первых, этот код создает и печатает список:
Output[A, B, C, C, B, A]
Затем этот код выполняет remove(1)
, чтобы удалить элемент с индексом 1
. Наконец, он печатает новый результирующий список, а также печатает удаленный элемент.
Output[A, C, C, B, A]
B
B
по индексу 1
удален.
2. IndexOutOfBoundsException с методом удаления (int index)
В этом примере рассматривается E remove(int index)
, когда индекс превышает список:
List<String> list = new ArrayList<>();
list.add("A");
String removedStr = list.remove(10);
Этот код создает список длиной 1
. Однако, когда код пытается удалить элемент с индексом 10
:
OutputException 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.journaldev.java.ArrayListRemove.main(ArrayListRemove.java:19)
Эта попытка вызывает исключение IndexOutOfBoundsException
.
3. Неизменяемый список remove() Пример UnsupportedOperationException
Метод List.of()
создает неизменяемый список, который нельзя изменить.
List<String> list = List.of("a", "b");
System.out.println(list);
String removedStr = list.remove(1);
System.out.println(removedStr);
Во-первых, этот код создает и печатает неизменяемый список:
- Output[a, b]
Затем код пытается использовать метод remove()
для удаления элемента с индексом 1
:
- Exception in thread "main" java.lang.UnsupportedOperationException
- at java.base/java.util.ImmutableCollections.uoe(ImmutableCollections.java:142)
- at java.base/java.util.ImmutableCollections$AbstractImmutableList.remove(ImmutableCollections.java:258)
- at TestRemoveList.main(TestRemoveList.java:12)
Эта попытка вызывает UnsupportedOperationException
. Он также выдаст UnsupportedOperationException
, если вы попытаетесь выполнить list.remove(a)
или list.remove(b)
.
4. Удаление объекта из списка
В этом примере исследуется boolean remove(Object o)
:
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);
Во-первых, этот код создает и печатает список:
Output[A, B, C, C, B, A]
Затем этот код выполняет remove(C)
, чтобы удалить первый экземпляр C
. Далее он выводит результирующий список, а также выводит логическое значение операции — true
:
Output[A, B, C, B, A]
true
Затем этот код выполняет remove(X)
, но экземпляра X
в списке нет, список не меняется. Наконец, он выводит список, а также выводит логическое значение операции — false
:
Output[A, B, C, B, A]
false
Заключение
В этой статье вы узнали о методе Java List
remove()
.
Рекомендуемое чтение:
- Список Java
- Список массивов Java
Использованная литература:
- Документ API List remove()