Cum să eliminați un element din ArrayList în Java?

ArrayList face parte din cadru de colectare și este prezent în pachetul java.util. Ne oferă matrice dinamice în Java. Cu toate acestea, poate fi mai lent decât matricele standard, dar poate fi util în programele în care este nevoie de multă manipulare în matrice. Această clasă se găsește în java.util pachet. Odată cu introducerea și actualizările în versiunile java, metode mai noi sunt disponibile dacă vedem din Java8 expresiile perceptive lambda și conceptele de fluxuri nu erau disponibile înainte, deoarece a fost introdus în versiunea java8, deci avem mai multe moduri de a opera prin Arraylist pentru a efectua operatii. Aici vom discuta despre o modalitate de a elimina un element dintr-o ArrayList.

În timp ce eliminăm elemente din ArrayList, putem opera fie pentru a elimina elementele peste indexuri, fie prin valorile existente într-o ArrayList. Vom discuta ambele moduri prin interpretare printr-un program java curat.

Metode:

Sunt 3 moduri de a elimina un element din ArrayList după cum este enumerat, care mai târziu va fi dezvăluit după cum urmează:

  1. Folosind metoda remove() prin indexuri (implicit)
  2. Folosind metoda remove() după valori
  3. Folosind metoda remove() peste iteratoare

Notă: Nu este recomandat să utilizați ArrayList.remove() atunci când iterați peste elemente.

Metoda 1: Folosind metoda remove() prin indexuri

Este o metodă implicită de îndată ce folosim orice metodă peste structura de date, practic funcționează numai pe indici, așa că ori de câte ori folosim metoda remove() eliminăm practic elemente din indici dintr-o ArrayList.

Clasa ArrayList oferă două metode de eliminare () supraîncărcate.

  • remove(int index): Acceptă indexul obiectului care urmează să fie eliminat
  • remove(Object obj): Acceptă obiectul care urmează să fie eliminat

Să ne dăm seama cu ajutorul exemplelor oferite mai jos, după cum urmează:

Exemplu:

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);> > }> }>

Ieșire

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

Acum am văzut eliminarea elementelor dintr-o ArrayList prin intermediul indecșilor de mai sus, acum să vedem că parametrul trecut este considerat un index. Cum să eliminați elemente după valoare.

Metoda 2: Folosind metoda remove() după valori

Exemplu:

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);> > }> }>

Ieșire:

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

Notă: Nu este recomandat să utilizați ArrayList.remove() atunci când iterați peste elemente.

De asemenea, noul Integer(int_value) a fost depreciat din Java 9, deci este mai bine să folosiți Integer.valueOf(int_value) pentru a converti un întreg primitiv în Integer Object.

Metoda 3: Folosind metoda Iterator.remove().

Acest lucru poate duce la ConcurrentModificationException Când iterați peste elemente, se recomandă utilizarea Iterator.remove() metodă.

Exemplu:

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);> > }> }>

Ieșire

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