CodeGym /Java Blog /Willekeurig /ArrayList removeAll()-methode in Java
John Squirrels
Niveau 41
San Francisco

ArrayList removeAll()-methode in Java

Gepubliceerd in de groep Willekeurig
De methode ArrayList removeAll() in Java verwijdert niet alle elementen uit de juiste ArrayList , zoals de naam doet vermoeden. Gebruik de methode ArrayList clear() als u deze bewerking nodig hebt . In tegenstelling tot clear() verwijdert de methode removeAll() alle items uit een bepaalde lijst die zich in een andere verzameling bevinden.

removeAll() syntaxis en declaratie

Hier is de syntaxis van de methode:

boolean removeAll(Collection<?> c)
Waarbij c een verzameling is die elementen bevat die uit deze lijst moeten worden verwijderd. Deze methode retourneert true als deze lijst is gewijzigd als gevolg van de aanroep. Het kan ook uitzonderingen genereren: ClassCastException — als de klasse van een element van deze lijst niet compatibel is met de opgegeven collectie NullPointerException — als de lijst een null-element bevat en de opgegeven collectie geen null-elementen toestaat, of als de opgegeven collectie null is

removeAll() code voorbeeld

Stel dat u een vriendenlijst op uw sociale netwerk heeft. Nou, het is de gebruikelijke gang van zaken voor nu. Laten we ook zeggen dat je nauwgezet bent en al je kwaadwillenden op een speciale lijst met vijanden plaatst, ongeacht of je vijanden tot je sociale netwerkvrienden behoren of niet. Je hebt besloten om je vriendenlijst te wissen van alle kwaadwillenden. De methode removeAll() zal hier zeker bij helpen:

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);
       }
   }
De uitvoer is:
Mijn oude vriendenlijst: [Alex, Ivy, Victor, Peter, Lenny, Olly, Stu, Scott, Olivia] Al mijn vijanden: [Ben, Scott, Chuck, Olly, Sam] nieuwe vriendenlijst zonder vijanden: [Alex, Ivy, Victor, Peter, Lenny, Stu, Olivia]
Zoals je kunt zien, heeft de methode je vijanden Olly en Scott verwijderd. Je had geen vijanden Ben, Chuck en Sam in je vriendenlijst gehad. Je hebt waarschijnlijk gemerkt dat je volgens de methodedeclaratie removeAll() niet alleen waarden uit je lijst kunt verwijderen, maar ook uit een willekeurige verzameling. Laten we een voorbeeld nemen met HashMap . In dit geval moet u expliciet aangeven dat u die records wilt verwijderen die bijvoorbeeld overeenkomen met waarden (removeAll (collection.value()) of sleutels (removeAll (collection.keySet()) . Laten we ons voorstellen dat we een HashMap met de namen van alle meisjes onder onze vrienden, en we moeten alleen jongens in de vriendenlijst laten staan(Ik weet niet waarom dit nodig zou kunnen zijn, maar je weet maar nooit). Laten we teruggaan naar ons voorbeeld met de oude vriendenlijst, een meisjes -HasMap maken en alle meisjes uit de vriendenlijst verwijderen van wie de naam is geschreven in de waarden van onze 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);
       }
   }
Hier is de uitvoer:
Mijn oude vriendenlijst: [Alex, Ivy, Victor, Peter, Lenny, Olly, Stu, Scott, Olivia] alleen jongensvriendenlijst: [Alex, Victor, Peter, Lenny, Stu, Scott]

Enkele speciale gevallen

Aan het begin van dit artikel schreef ik dat om alle waarden uit de lijst te verwijderen, je de ArrayList clear() methode moet gebruiken. Dat is het, maar je kunt hiervoor natuurlijk ook de methode removeAll() gebruiken. Je hebt waarschijnlijk al geraden hoe je dit moet doen:

myList.RemoveAll (myList);
Laten we een voorbeeld geven. Laten we in een vlaag van sociopathie onze hele vriendenlijst leegmaken:

 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);
       }
   }
Hier is de uitvoer:
vriendenlijst alleen voor jongens: [Alex, Victor, Peter, Lenny, Stu, Scott] mijn nieuwe lege vriendenlijst...:[]
Laten we in ieder geval proberen null-collection-elementen uit onze ArrayList te verwijderen :

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);
       }
   }
Volgens de methodedefinitie van removeAll() hebben we een uitzondering in de uitvoer:
Mijn oude vriendenlijst: [Alex, Ivy, Victor, Peter, Lenny, Olly, Stu, Scott, Olivia] Uitzondering in thread "main" java.lang.NullPointerException
Opmerkingen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION