Поиск по сайту:

Как использовать методы remove() для Java List и ListArray


Введение

Метод Java List remove() используется для удаления элементов из списка. ArrayList — это наиболее широко используемая реализация интерфейса List, поэтому в приведенных здесь примерах будут использоваться методы ArrayList remove().

Методы удаления списка Java()

Существует два метода remove() для удаления элементов из списка.

  1. E remove(int index): этот метод удаляет элемент с указанным индексом и возвращает его. Последующие элементы сдвигаются влево на одну позицию. Этот метод генерирует IndexOutOfBoundsException, если указанный индекс выходит за пределы допустимого диапазона. Если реализация списка не поддерживает эту операцию, генерируется UnsupportedOperationException.
  2. 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:

Output
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.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);

Во-первых, этот код создает и печатает неизменяемый список:

  1. Output
    [a, b]

Затем код пытается использовать метод remove() для удаления элемента с индексом 1:

  1. Exception 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)

Эта попытка вызывает 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()