Рубрики
Без рубрики

Удаление элемента Из списка ArrayList

Изучите несколько способов удаления элемента из списка ArrayList в Java.

Автор оригинала: baeldung.

1. Обзор

В этом уроке мы рассмотрим, как удалить элементы из ArrayList в Java, используя различные методы. Учитывая список видов спорта, давайте посмотрим, как мы можем избавиться от некоторых элементов следующего списка:

List sports = new ArrayList<>();
sports.add("Football");
sports.add("Basketball");
sports.add("Baseball");
sports.add("Boxing");
sports.add("Cycling");

2. ArrayList#удалить

ArrayList имеет два доступных метода для удаления элемента: передача индекса элемента , подлежащего удалению, или передача самого элемента , подлежащего удалению, если таковой имеется. Мы увидим оба обычая.

2.1. Удалить по индексу

Используя remove , передавая индекс в качестве параметра, мы можем удалить элемент в указанной позиции в списке и сдвинуть любые последующие элементы влево, вычитая один из их индексов. После выполнения remove метод вернет элемент, который был удален:

sports.remove(1); // since index starts at 0, this will remove "Basketball"
assertEquals(4, sports.size());
assertNotEquals(sports.get(1), "Basketball");

2.2. Удалить по элементу

Другой способ – удалить первое вхождение элемента из списка с помощью этого метода. Формально говоря, мы удаляем элемент с наименьшим индексом, если он существует, если нет, список остается неизменным:

sports.remove("Baseball");
assertEquals(4, sports.size());
assertFalse(sports.contains("Baseball"));

3. Удаление Во Время Итерации

Иногда мы хотим удалить элемент из ArrayList во время его зацикливания. Из-за того, что мы не генерируем исключение ConcurrentModificationException, нам нужно использовать Итератор класс, чтобы сделать это правильно.

Давайте посмотрим, как мы можем избавиться от элемента в цикле :

Iterator iterator = sports.iterator();
while (iterator.hasNext()) {
    if (iterator.next().equals("Boxing")) {
        iterator.remove();
    }
}

4. ArrayList#removeIf (JDK 8+)

Если мы используем JDK 8 или более поздние версии , мы можем воспользоваться ArrayList# remove If , который удаляет все элементы ArrayList , удовлетворяющие заданному предикату.

sports.removeIf(p -> p.equals("Cycling"));
assertEquals(4, sports.size());
assertFalse(sports.contains("Cycling"));

Наконец, мы можем сделать это с помощью сторонних библиотек, таких как Apache Commons, и, если мы хотим углубиться, мы можем увидеть, как эффективно удалить все конкретные вхождения .

5. Заключение

В этом уроке мы рассмотрели различные способы удаления элементов из списка ArrayList в Java.

Как обычно, все примеры, используемые в этом учебнике, доступны на GitHub .