Suppression d'un élément d'une ArrayList

1. Vue d'ensemble

Dans ce didacticiel, nous allons voir comment supprimer des éléments d'une ArrayList en Java en utilisant différentes techniques. Compte tenu d'une liste de sports, voyons comment nous pouvons nous débarrasser de certains éléments de la liste suivante:

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

2. ArrayList # remove

ArrayList a deux méthodes disponibles pour supprimer un élément, en passant l'index de l'élément à supprimer ou en passant l'élément lui-même à supprimer, s'il est présent. Nous allons voir les deux usages.

2.1. Supprimer par index

En utilisant remove en passant un index comme paramètre, nous pouvons supprimer l'élément à la position spécifiée dans la liste et décaler tous les éléments suivants vers la gauche, en soustrayant un de leurs indices. Après l'exécution, la méthode remove renverra l'élément qui a été supprimé:

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

2.2. Supprimer par élément

Une autre méthode consiste à supprimer la première occurrence d'un élément d'une liste à l' aide de cette méthode. Formellement parlant, nous supprimons l'élément avec l'index le plus bas s'il existe, sinon, la liste reste inchangée:

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

3. Suppression en cours d'itération

Parfois, nous voulons supprimer un élément d'un ArrayList pendant que nous le bouclons. En raison de ne pas générer d' exception ConcurrentModificationException, nous devons utiliser la classe Iterator pour le faire correctement.

Voyons comment nous pouvons nous débarrasser d'un élément dans une boucle :

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

4. ArrayList # removeIf (JDK 8+)

Si nous utilisons JDK 8 ou des versions supérieures , nous pouvons profiter de ArrayList # removeIf qui supprime tous les éléments de l' ArrayList qui satisfont un prédicat donné.

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

Enfin, nous pouvons le faire en utilisant des bibliothèques tierces comme Apache Commons et, si nous voulons aller plus loin, nous pouvons voir comment supprimer toutes les occurrences spécifiques de manière efficace.

5. Conclusion

Dans ce didacticiel, nous avons examiné les différentes façons de supprimer des éléments d'une ArrayList en Java.

Comme d'habitude, tous les exemples utilisés dans ce tutoriel sont disponibles sur GitHub.