1. Обзор
В этом уроке мы рассмотрим, как удалить элементы из ArrayList в Java, используя различные методы. Учитывая список видов спорта, давайте посмотрим, как мы можем избавиться от некоторых элементов следующего списка:
Listsports = 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, нам нужно использовать Итератор класс, чтобы сделать это правильно.
Давайте посмотрим, как мы можем избавиться от элемента в цикле :
Iteratoriterator = 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 .