Класс Java ArrayList является частью фреймворка Collection и позволяет добавлять и удалять элементы с помощью методов экземпляра. Внутри он поддерживает массив изменяемого размера, который динамически увеличивается или уменьшается в результате добавления или удаления элементов из него.
В этом руководстве рассматриваются различные способы удаления одного или нескольких элементов из ArrayList с помощью методов remove(), removeAll() и removeIf().
- Метод remove() удаляет один элемент либо по указанному значению, либо из указанного индекса.
- Метод removeAll() удаляет все элементы указанной коллекции из текущего списка.
- Метод removeIf() удаляет все элементы, соответствующие Predicate.
ArrayList arraylist2 = new ArrayList<>();//1 - Удалить элемент из указанной позиции индексаarraylist.remove(indexPosition);//2 - Удалить первое вхождение элемента по его значениюarraylist.remove(элемент);//3 - Удалить все элементы указанной коллекции из arraylistarraylist.removeAll(Arrays.asList(ele1, ele2, ele3));//4 - Удалить все элементы, соответствующие условиюarraylist.removeIf(e -> e.contains("temp"));
1. Синтаксис методов remove(), removeAll() и removeIf()
Метод remove() перегружен.
E удалить(целый индекс)логическое удаление(элемент E))
- Remove(int index) – удаляет элемент по указанному индексу и возвращает удаленный элемент.
- remove(E element) – удаляет указанный элемент по значению и возвращает true, если элемент был удален, в противном случае возвращает false.
Метод removeAll() принимает коллекцию и удаляет все элементы указанной коллекции из текущего списка.
boolean removeAll(Collection<?> c)
Функция removeIf() принимает предикат для сопоставления удаляемых элементов.
boolean removeIf(Predicate<? super E> filter)
2. Удалить элемент по указанному индексу
Метод remove(index) удаляет указанный элемент E в указанной позиции в этом списке. Он удаляет элемент, находящийся в этой позиции в данный момент, а все последующие элементы перемещаются влево(вычитают единицу из своих индексов).
Обратите внимание, что индексы списков начинаются с 0.
ArrayList<String> namesList = new ArrayList<String>(Arrays.asList( "alex", "brian", "charles") );System.out.println(namesList); //list size is 3//Remove element at 1 indexnamesList.remove(1);System.out.println(namesList); //list size is 2
Вывод программы.
[alex, brian, charles][alex, charles]
2. Удалить элемент(ы) по значению
Метод remove(Object) удаляет первое вхождение указанного элемента E в этом списке. Поскольку этот метод удаляет объект, размер списка уменьшается на единицу.
ArrayList<String> namesList = new ArrayList<>(Arrays.asList( "alex", "brian", "charles", "alex") );System.out.println(namesList);namesList.remove("alex");System.out.println(namesList);
Вывод программы.
[alex, brian, charles, alex][brian, charles, alex]
Чтобы удалить все вхождения указанного элемента, мы можем использовать метод removeAll(). Поскольку этот метод принимает аргумент коллекции, нам сначала нужно обернуть удаляемый элемент в список.
namesList.removeAll(List.of("alex"));
Вывод программы.
[brian, charles]
3. Удалить элемент(ы) с соответствующим условием
Мы можем использовать еще один очень простой синтаксис из потока Java 8, чтобы удалить все элементы для заданного значения элемента, используя метод removeIf().
Следующая программа Java использует List.removeIf() для удаления нескольких элементов из arraylist в Java по значению элемента.
ArrayList<String> namesList = new ArrayList<String>(Arrays.asList( "alex", "brian", "charles", "alex") );System.out.println(namesList);namesList.removeIf( name -> name.equals("alex"));System.out.println(namesList);
Вывод программы.
[alex, brian, charles, alex][brian, charles]
4. Заключение
Класс ArrayList(или любой другой тип списка в фреймворке коллекций) предоставляет удобные методы для удаления элементов с использованием различных методов. Каждый метод служит уникальному варианту использования.
Знание того, когда использовать тот или иной метод удаления, является ключом к эффективному использованию класса ArrayList во время обработки данных в приложениях.