Comment supprimer un élément d’ArrayList en Java ?

ArrayList fait partie de cadre de collecte et est présent dans le package java.util. Il nous fournit des tableaux dynamiques en Java. Cependant, il peut être plus lent que les tableaux standard, mais peut être utile dans les programmes où de nombreuses manipulations dans le tableau sont nécessaires. Cette classe se retrouve dans java.util emballer. Avec l'introduction et les mises à niveau dans les versions Java, de nouvelles méthodes sont disponibles si nous voyons dans Java8 que les expressions lambda perspicaces et les concepts de flux n'étaient pas disponibles avant car il a été introduit dans la version Java8, nous avons donc plus de moyens d'opérer sur Arraylist pour effectuer des opérations. Ici, nous discuterons d'un moyen de supprimer un élément d'une ArrayList.

Lors de la suppression d'éléments d'ArrayList, nous pouvons soit opérer pour supprimer des éléments sur des index, soit via des valeurs présentes dans une ArrayList. Nous discuterons des deux manières via l’interprétation via un programme Java propre.

Méthodes :

Il y a 3 façons de supprimer un élément de ArrayList comme indiqué qui sera révélé plus tard comme suit :

  1. Utilisation de la méthode Remove() par index (par défaut)
  2. Utilisation de la méthode Remove() par valeurs
  3. Utilisation de la méthode Remove() sur les itérateurs

Note: Il n'est pas recommandé d'utiliser ArrayList.remove() lors d'une itération sur des éléments.

Méthode 1 : Utilisation de la méthode Remove() par index

Il s'agit d'une méthode par défaut dès que nous utilisons une méthode sur la structure de données, elle fonctionne essentiellement sur les index uniquement, donc chaque fois que nous utilisons la méthode remove(), nous supprimons essentiellement des éléments des index d'une ArrayList.

Classe ArrayList fournit deux méthodes Remove() surchargées.

  • remove(int index) : Accepte l'index de l'objet à supprimer
  • remove(Object obj) : Accepte l'objet à supprimer

Voyons à l'aide des exemples fournis ci-dessous comme suit :

Exemple:

Java




// Java program to Remove Elements from ArrayList> // Using remove() method by indices> > // Importing required classes> import> java.util.ArrayList;> import> java.util.List;> > // Main class> public> class> GFG {> > // Main driver method> > public> static> void> main(String[] args)> > {> > // Creating an object of List interface with> > // reference to ArrayList class> > List al => new> ArrayList();> > > // Adding elements to our ArrayList> > // using add() method> > al.add(> 10> );> > al.add(> 20> );> > al.add(> 30> );> > al.add(> 1> );> > al.add(> 2> );> > > // Printing the current ArrayList> > System.out.println(al);> > > // This makes a call to remove(int) and> > // removes element 20> > al.remove(> 1> );> > > // Now element 30 is moved one position back> > // So element 30 is removed this time> > al.remove(> 1> );> > > // Printing the updated ArrayList> > System.out.println(al);> > }> }>

Sortir

[10, 20, 30, 1, 2] [10, 1, 2] 

Maintenant que nous avons vu ci-dessus supprimer des éléments dans une ArrayList via des index, voyons maintenant que le paramètre passé est considéré comme un index. Comment supprimer des éléments par valeur.

Méthode 2 : Utilisation de la méthode Remove() par valeurs

Exemple:

Java




// Java program to Remove Elements from ArrayList> // Using remove() method by values> > // Importing required classes> import> java.util.ArrayList;> import> java.util.List;> > // Main class> public> class> GFG {> > // Main driver method> > public> static> void> main(String[] args)> > {> > // Creating an object of List interface with> > // reference to ArrayList> > List al => new> ArrayList();> > > // Adding elements to ArrayList class> > // using add() method> > al.add(> 10> );> > al.add(> 20> );> > al.add(> 30> );> > al.add(> 1> );> > al.add(> 2> );> > > // Printing the current ArrayList> > System.out.println(al);> > > // This makes a call to remove(Object) and> > // removes element 1> > al.remove(Integer.valueOf(> 1> ));> > > // This makes a call to remove(Object) and> > // removes element 2> > al.remove(Integer.valueOf(> 2> ));> > > // Printing the modified ArrayList> > System.out.println(al);> > }> }>

Sortir :

[10, 20, 30,1 ,2] [10, 20, 30] 

Note: Il n'est pas recommandé d'utiliser ArrayList.remove() lors d'une itération sur des éléments.

De plus, new Integer(int_value) est obsolète depuis Java 9, il est donc préférable d'utiliser Integer.valueOf(int_value) pour convertir un entier primitif en objet Integer.

Méthode 3 : Utilisation de la méthode Iterator.remove()

Cela peut conduire à ConcurrentModificationException Lors d'une itération sur des éléments, il est recommandé d'utiliser Itérateur.remove() méthode.

Exemple:

Java




// Java program to demonstrate working of> // Iterator.remove() on an integer ArrayList> import> java.util.ArrayList;> import> java.util.Iterator;> import> java.util.List;> > public> class> GFG {> > > // Main driver method> > public> static> void> main(String[] args)> > {> > // Creating an ArrayList> > List al => new> ArrayList();> > > // Adding elements to our ArrayList> > // using add() method> > al.add(> 10> );> > al.add(> 20> );> > al.add(> 30> );> > al.add(> 1> );> > al.add(> 2> );> > > // Printing the current ArrayList> > System.out.println(al);> > > // Creating iterator object> > Iterator itr = al.iterator();> > > // Holds true till there is single element> > // remaining in the object> > while> (itr.hasNext()) {> > > // Remove elements smaller than 10 using> > // Iterator.remove()> > int> x = (Integer)itr.next();> > if> (x <> 10> )> > itr.remove();> > }> > > // Printing the updated ArrayList> > System.out.print(al);> > }> }>

Sortir

[10, 20, 30, 1, 2] [10, 20, 30]