CodeGym /Blog Java /Random-PL /Metoda ArrayList removeAll() w Javie
Autor
Pavlo Plynko
Java Developer at CodeGym

Metoda ArrayList removeAll() w Javie

Opublikowano w grupie Random-PL
Metoda ArrayList removeAll() w Javie nie usuwa wszystkich elementów z właściwej ArrayList , jak może sugerować jej nazwa. Jeśli potrzebujesz tej operacji, użyj metody Clear() ArrayList . W przeciwieństwie do metody clear() metoda removeAll() usuwa wszystkie elementy z danej listy, które znajdują się w innej kolekcji.

Składnia i deklaracja removeAll().

Oto składnia metody:

boolean removeAll(Collection<?> c)
Gdzie c to kolekcja zawierająca elementy, które mają zostać usunięte z tej listy. Ta metoda zwraca wartość true, jeśli ta lista uległa zmianie w wyniku wywołania. Może również zgłaszać wyjątki: ClassCastException — jeśli klasa elementu tej listy jest niekompatybilna z określoną kolekcją NullPointerException — jeśli lista zawiera element pusty, a określona kolekcja nie dopuszcza elementów pustych lub jeśli określona kolekcja jest pusta

Przykład kodu removeAll().

Załóżmy, że masz listę znajomych w sieci społecznościowej. Cóż, na razie to codzienność. Załóżmy też, że jesteś skrupulatny i wpisz wszystkich swoich przeciwników na specjalną listę wrogów, niezależnie od tego, czy wrogowie są wśród znajomych z sieci społecznościowej, czy nie. Zdecydowałeś się wyczyścić listę znajomych ze wszystkich nieżyczliwych osób. Metoda removeAll() na pewno w tym pomoże:

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);
       }
   }
Dane wyjściowe to:
Moja stara lista przyjaciół: [Alex, Ivy, Victor, Peter, Lenny, Olly, Stu, Scott, Olivia] Wszyscy moi wrogowie: [Ben, Scott, Chuck, Olly, Sam] Lista nowych przyjaciół bez wrogów: [Alex, Ivy, Victor, Peter, Lenny, Stu, Olivia]
Jak widać, metoda usunęła twoich wrogów Olly'ego i Scotta. Nie miałeś wrogów Bena, Chucka i Sama na swojej liście znajomych. Zapewne zauważyłeś, że zgodnie z deklaracją metody removeAll() możesz usunąć ze swojej listy nie tylko wartości z innej listy, ale także z losowej kolekcji. Weźmy przykład z HashMap . W takim przypadku musisz wyraźnie wskazać, że chcesz usunąć te rekordy, które pasują na przykład do wartości (removeAll (collection.values()) lub kluczy (removeAll (collection.keySet()) . Wyobraźmy sobie, że mamy HashMap z imionami wszystkich dziewczyn spośród naszych przyjaciół, a na liście znajomych musimy zostawić tylko chłopców(Nie wiem, dlaczego może to być potrzebne, ale nigdy nie wiadomo). Wróćmy do naszego przykładu ze starą listą znajomych, utwórzmy dziewczyny HasMap i usuńmy z listy znajomych wszystkie dziewczyny, których imiona są zapisane w wartościach naszej 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);
       }
   }
Oto dane wyjściowe:
Moja stara lista znajomych: [Alex, Ivy, Victor, Peter, Lenny, Olly, Stu, Scott, Olivia] Lista przyjaciół tylko dla chłopców: [Alex, Victor, Peter, Lenny, Stu, Scott]

Niektóre szczególne przypadki

Na początku tego artykułu napisałem, że aby usunąć wszystkie jego wartości z listy, należy użyć metody ArrayList clear() . Jest, ale oczywiście możesz również użyć do tego celu metody removeAll() . Pewnie już się domyśliłeś, jak to zrobić:

myList.RemoveAll (myList);
Podajmy przykład. W przypływie socjopatii opróżnijmy całą naszą listę znajomych:

 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);
       }
   }
Oto dane wyjściowe:
lista przyjaciół tylko dla chłopców: [Alex, Victor, Peter, Lenny, Stu, Scott] moja nowa pusta lista przyjaciół...:[]
Przynajmniej spróbujmy usunąć elementy zerowej kolekcji z naszej 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);
       }
   }
Zgodnie z definicją metody removeAll() mamy wyjątek na wyjściu:
Moja stara lista znajomych: [Alex, Ivy, Victor, Peter, Lenny, Olly, Stu, Scott, Olivia] Wyjątek w wątku „main” java.lang.NullPointerException
Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION