CodeGym /Java blog /Véletlen /ArrayList removeAll() metódus Java-ban
John Squirrels
Szint
San Francisco

ArrayList removeAll() metódus Java-ban

Megjelent a csoportban
A Java ArrayList removeAll() metódusa nem távolítja el az összes elemet a megfelelő ArrayListből , ahogy a neve is sugallja. Ha szüksége van erre a műveletre, használja az ArrayList clear() metódust. A clear()- től eltérően a removeAll() metódus eltávolítja az összes olyan elemet egy adott listáról, amely egy másik gyűjteményben található.

RemoveAll() szintaxis és deklaráció

Íme a metódus szintaxisa:

boolean removeAll(Collection<?> c)
Ahol c egy gyűjtemény, amely a listából eltávolítandó elemeket tartalmaz. Ez a metódus igazat ad vissza, ha ez a lista megváltozott a hívás hatására. Kivételeket is tud dobni: ClassCastException — ha a lista egy elemének osztálya nem kompatibilis a megadott NullPointerException gyűjteménnyel — ha a lista null elemet tartalmaz és a megadott gyűjtemény nem engedélyez null elemeket, vagy ha a megadott gyűjtemény null

RemoveAll() kód példa

Tegyük fel, hogy van egy barátlistája a közösségi hálózatán. Nos, egyelőre ez a szokásos. Tegyük fel, hogy Ön aprólékos ember, és minden rosszakaróját felírja egy speciális ellenséglistára, függetlenül attól, hogy ellenségei a közösségi hálózaton lévő barátaid között vannak-e vagy sem. Úgy döntöttél, hogy törlöd a barátok listáját az összes rossz szándékútól. A removeAll() metódus biztosan segít ebben:

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);
       }
   }
A kimenet a következő:
Régi barátlistám: [Alex, Ivy, Victor, Peter, Lenny, Olly, Stu, Scott, Olivia] Minden ellenségem: [Ben, Scott, Chuck, Olly, Sam] új barátok listája ellenségek nélkül: [Alex, Ivy, Victor, Peter, Lenny, Stu, Olivia]
Amint látja, a módszer törölte az ellenségeit, Ollyt és Scottot. Nem volt ellenséged, Ben, Chuck és Sam a barátlistádon. Valószínűleg észrevette már, hogy a removeAll() metódus deklarációja szerint nem csak egy másik lista értékeit törölheti a listából, hanem egy véletlenszerű gyűjteményből is. Vegyünk egy példát a HashMap- pel . Ebben az esetben kifejezetten jeleznie kell, hogy el akarja távolítani azokat a rekordokat, amelyek például értékekkel (removeAll (collection.values()) vagy kulcsokkal (removeAll (collection.keySet())) egyeznek . Képzeljük el, hogy van egy HashMap a barátaink összes lányának nevével, és csak fiúkat kell hagynunk a barátlistában(Nem tudom, miért lehet erre szükség, de sosem lehet tudni). Térjünk vissza a példánkhoz a régi barátlistával, hozzunk létre egy lány HasMap-et , és távolítsunk el a barátlistáról minden olyan lányt, akinek a neve szerepel a HashMap értékei között .

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);
       }
   }
Íme a kimenet:
Régi barátlistám: [Alex, Ivy, Victor, Peter, Lenny, Olly, Stu, Scott, Olivia] csak fiúbarátok listája: [Alex, Victor, Peter, Lenny, Stu, Scott]

Néhány speciális eset

A cikk elején írtam, hogy az összes érték eltávolításához a listáról az ArrayList clear() metódust kell használnia. Az, de természetesen használhatod a removeAll() metódust is erre. Valószínűleg már kitaláltad, hogyan kell ezt csinálni:

myList.RemoveAll (myList);
Mondjunk egy példát. Szociopátiás rohamában ürítsük ki az egész barátlistánkat:

 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);
       }
   }
Íme a kimenet:
Csak fiúk barátlista: [Alex, Victor, Peter, Lenny, Stu, Scott] az új, üres barátlistám...:[]
Legalább próbáljuk meg eltávolítani a null-collection elemeket az ArrayList -ből :

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);
       }
   }
A removeAll() metódusdefiníció szerint kivételt kapunk a kimenetben:
Régi barátlistám: [Alex, Ivy, Victor, Peter, Lenny, Olly, Stu, Scott, Olivia] Kivétel a "main" szálban java.lang.NullPointerException
Hozzászólások
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION