Видалення елемента зі списку масивів

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 поверне елемент, який було видалено:

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 iterator = sports.iterator(); while (iterator.hasNext()) { if (iterator.next().equals("Boxing")) { iterator.remove(); } }

4. ArrayList # removeIf (JDK 8+)

Якщо ми використовуємо JDK 8 або новіші версії, ми можемо скористатися ArrayList # removeIf, який видаляє всі елементи ArrayList, які задовольняють даному предикату.

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

Нарешті, ми можемо зробити це за допомогою сторонніх бібліотек, таких як Apache Commons, і, якщо ми хочемо піти глибше, ми можемо побачити, як ефективно видалити всі конкретні випадки.

5. Висновок

У цьому підручнику ми розглянули різні способи видалення елементів із ArrayList у Java.

Як завжди, усі приклади, використані в цьому посібнику, доступні на GitHub.