Rimozione di un elemento da un ArrayList

1. Panoramica

In questo tutorial, vedremo come rimuovere elementi da un ArrayList in Java utilizzando tecniche diverse. Dato un elenco di sport, vediamo come possiamo sbarazzarci di alcuni elementi del seguente elenco:

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

2. ArrayList # rimuove

ArrayList ha due metodi disponibili per rimuovere un elemento, passando l'indice dell'elemento da rimuovere o passando l'elemento stesso da rimuovere, se presente. Vedremo entrambi gli usi.

2.1. Rimuovi per indice

Usando remove passando un indice come parametro, possiamo rimuovere l'elemento nella posizione specificata nella lista e spostare eventuali elementi successivi a sinistra, sottraendo uno dai loro indici. Dopo l'esecuzione, il metodo remove restituirà l'elemento che è stato rimosso:

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

2.2. Rimuovi per elemento

Un altro modo è rimuovere la prima occorrenza di un elemento da un elenco utilizzando questo metodo. Formalmente, stiamo rimuovendo l'elemento con l'indice più basso se esiste, in caso contrario, l'elenco è invariato:

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

3. Rimozione durante l'iterazione

A volte vogliamo rimuovere un elemento da un ArrayList mentre lo stiamo ripetendo. A causa di non generare un'eccezione ConcurrentModificationException, è necessario utilizzare la classe Iterator per farlo correttamente.

Vediamo come possiamo sbarazzarci di un elemento in un ciclo :

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

4. ArrayList # removeIf (JDK 8+)

Se stiamo usando JDK 8 o versioni successive , possiamo sfruttare ArrayList # removeIf che rimuove tutti gli elementi di ArrayList che soddisfano un dato predicato.

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

Infine, possiamo farlo utilizzando librerie di terze parti come Apache Commons e, se vogliamo andare più a fondo, possiamo vedere come rimuovere tutte le occorrenze specifiche in modo efficiente.

5. conclusione

In questo tutorial, abbiamo esaminato i vari modi per rimuovere elementi da un ArrayList in Java.

Come al solito, tutti gli esempi utilizzati in questo tutorial sono disponibili su GitHub.