CodeGym /Java Blog /Random-IT /Metodo ArrayList removeAll() in Java
John Squirrels
Livello 41
San Francisco

Metodo ArrayList removeAll() in Java

Pubblicato nel gruppo Random-IT
Il metodo ArrayList removeAll() in Java non rimuove tutti gli elementi dal corretto ArrayList , come potrebbe suggerire il nome. Se hai bisogno di questa operazione, usa il metodo ArrayList clear() . A differenza di clear() , il metodo removeAll() rimuove tutti gli elementi da un determinato elenco contenuti in un'altra raccolta.

removeAll() sintassi e dichiarazione

Ecco la sintassi del metodo:

boolean removeAll(Collection<?> c)
Dove c è una raccolta che contiene elementi da rimuovere da questo elenco. Questo metodo restituisce true se l'elenco è stato modificato in seguito alla chiamata. Inoltre può generare eccezioni: ClassCastException — se la classe di un elemento di questo elenco è incompatibile con la raccolta specificata NullPointerException — se l'elenco contiene un elemento nullo e la raccolta specificata non consente elementi nulli o se la raccolta specificata è nulla

esempio di codice removeAll()

Supponiamo che tu abbia una lista di amici sul tuo social network. Beh, per ora è la solita cosa. Inoltre, diciamo che sei un meticoloso e inserisci tutti i tuoi malvagi in una lista speciale di nemici, indipendentemente dal fatto che i tuoi nemici siano o meno tra i tuoi amici di social network. Hai deciso di cancellare la tua lista di amici da tutti i malvagi. Il metodo removeAll() aiuterà sicuramente con questo:

import java.util.ArrayList;
import java.util.List;

public class RemoveAll2Example {
  
       public static void main(String[] args) {

           
           List<String> friendList = new ArrayList<String>();

           // use add() method to add friends into your friend list
           friendList.add("Alex");
           friendList.add("Ivy");
           friendList.add("Victor");
           friendList.add("Peter");
           friendList.add("Lenny");
           friendList.add("Olly");
           friendList.add("Stu");
           friendList.add("Scott");
           friendList.add("Olivia");

           System.out.println("My old friend list: "+ friendList);

           //create and add elements to foe list 
           List<String> foeList = new ArrayList<String>();

           foeList.add("Ben");
           foeList.add("Scott");
           foeList.add("Chuck");
           foeList.add("Olly");
           foeList.add("Sam");
           System.out.println("All my enemies: "+ foeList);

           //remove all foeList elements from friendList list if they exist
           friendList.removeAll(foeList);
           System.out.println("new friend List without foes: "+ friendList);
       }
   }
L'uscita è:
La mia vecchia lista di amici: [Alex, Ivy, Victor, Peter, Lenny, Olly, Stu, Scott, Olivia] Tutti i miei nemici: [Ben, Scott, Chuck, Olly, Sam] Nuova lista di amici senza nemici: [Alex, Ivy, Victor, Peter, Lenny, Stu, Olivia]
Come puoi vedere, il metodo ha eliminato i tuoi nemici Olly e Scott. Non avevi nemici Ben, Chuck e Sam nella tua lista di amici. Probabilmente hai notato che secondo la dichiarazione del metodo removeAll() puoi eliminare dalla tua lista non solo i valori da un'altra lista, ma anche da una raccolta casuale. Facciamo un esempio con HashMap . In questo caso è necessario indicare esplicitamente che si desidera rimuovere quei record che corrispondono, ad esempio, a valori (removeAll (collection.values()) o chiavi (removeAll (collection.keySet()) . Immaginiamo di avere un HashMap con i nomi di tutte le ragazze tra i nostri amici, e dobbiamo lasciare solo i ragazzi nella lista degli amici(Non so perché potrebbe essere necessario, ma non si sa mai). Torniamo al nostro esempio con la vecchia lista di amici, creiamo una HasMap per ragazze e rimuoviamo dalla lista di amici tutte le ragazze i cui nomi sono scritti nei valori della nostra HashMap .

import java.util.*;

public class RemoveAll2Example {
  
       public static void main(String[] args) {

          // create an empty array list and full it up using Java 9 Factory Methods  in one line
List<String> friendList= new ArrayList<>(List.of("Alex", "Ivy", "Victor", "Peter", "Lenny", "Olly", "Stu", "Scott", "Olivia"));

           System.out.println("My old friend list: "+ friendList);

           // Creating hashMap with girls keys and names also using using Java 9 Factory Methods   
           Map<Integer, String> girls = new HashMap<>(Map.of(1, "Olly", 2, "Olivia", 3, "Loe", 4, "Ivy"));
           friendList.removeAll(girls.values());
           System.out.println("boys only friendList: " + friendList);
       }
   }
Ecco l'output:
La mia vecchia lista di amici: [Alex, Ivy, Victor, Peter, Lenny, Olly, Stu, Scott, Olivia] lista di soli amici per ragazzi: [Alex, Victor, Peter, Lenny, Stu, Scott]

Alcuni casi speciali

All'inizio di questo articolo ho scritto che per rimuovere tutti i suoi valori dall'elenco, è necessario utilizzare il metodo ArrayList clear() . Lo è, ma ovviamente puoi anche usare il metodo removeAll() per questo. Probabilmente hai già indovinato come fare:

myList.RemoveAll (myList);
Facciamo un esempio. In un impeto di sociopatia, svuotiamo tutta la nostra lista amici:

 import java.util.*;

public class RemoveAll2Example {
  
       public static void main(String[] args) {

           // create an empty array list and full it up using  Java 9 Factory Methods  in one line
           List<String> friendList= new ArrayList<>(List.of("Alex", "Ivy", "Victor", "Peter", "Lenny", "Olly", "Stu", "Scott", "Olivia"));
           System.out.println("My old friend list: "+ friendList);

           friendList.removeAll(friendList);
           System.out.println("my new empty friendlist...:" + friendList);
       }
   }
Ecco l'output:
lista amici solo per ragazzi: [Alex, Victor, Peter, Lenny, Stu, Scott] la mia nuova lista amici vuota...:[]
Almeno proviamo a rimuovere gli elementi di raccolta null dal nostro ArrayList :

import java.util.*;

public class RemoveAll2Example {
  
       public static void main(String[] args) {

           List<String> friendList = new ArrayList<>(List.of("Alex", "Ivy", "Victor", "Peter", "Lenny", "Olly", "Stu", "Scott", "Olivia"));
           System.out.println("My old friend list: "+ friendList);

           // we are happy not to have foes 
           List<String> foeList = null;
          
           //trying to remove all foeList elements from friendList list 
            friendList.removeAll(foeList);
            System.out.println("my new friendlist:" + friendList);
       }
   }
Secondo la definizione del metodo removeAll() abbiamo un'eccezione nell'output:
La mia vecchia lista di amici: [Alex, Ivy, Victor, Peter, Lenny, Olly, Stu, Scott, Olivia] Eccezione nel thread "principale" java.lang.NullPointerException
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION