CodeGym /Blog Java /Random-ES /Método ArrayList removeAll() en Java
Autor
Pavlo Plynko
Java Developer at CodeGym

Método ArrayList removeAll() en Java

Publicado en el grupo Random-ES
El método removeAll() de ArrayList en Java no elimina todos los elementos de la ArrayList adecuada , como podría sugerir su nombre. Si necesita esta operación, use el método ArrayList clear() . A diferencia de clear() , el método removeAll() elimina todos los elementos de una lista determinada que se encuentran en otra colección.

removeAll() sintaxis y declaración

Aquí está la sintaxis del método:

boolean removeAll(Collection<?> c)
Donde c es una colección que contiene elementos que se eliminarán de esta lista. Este método devuelve verdadero si esta lista cambió como resultado de la llamada. También puede generar excepciones: ClassCastException : si la clase de un elemento de esta lista es incompatible con la colección especificada. NullPointerException : si la lista contiene un elemento nulo y la colección especificada no permite elementos nulos, o si la colección especificada es nula.

ejemplo de código removeAll()

Digamos que tienes una lista de amigos en tu red social. Bueno, es lo habitual por ahora. Además, digamos que eres meticuloso e ingresas a todos tus malvados en una lista especial de enemigos, independientemente de si tus enemigos están entre tus amigos de la red social o no. Has decidido borrar tu lista de amigos de todos los malvados. El método removeAll() definitivamente ayudará con esto:

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);
       }
   }
La salida es:
Mi lista de viejos amigos: [Alex, Ivy, Victor, Peter, Lenny, Olly, Stu, Scott, Olivia] Todos mis enemigos: [Ben, Scott, Chuck, Olly, Sam] Lista de nuevos amigos sin enemigos: [Alex, Ivy, Víctor, Peter, Lenny, Stu, Olivia]
Como puede ver, el método eliminó a sus enemigos Olly y Scott. No habías tenido enemigos Ben, Chuck y Sam en tu lista de amigos. Probablemente haya notado que, de acuerdo con la declaración del método removeAll(), puede eliminar de su lista no solo valores de otra lista, sino también de una colección aleatoria. Tengamos un ejemplo con HashMap . En este caso, debe indicar explícitamente que desea eliminar aquellos registros que coincidan, por ejemplo, con valores (removeAll (colección.valores()) o claves (removeAll (colección.keySet()) . Imaginemos que tenemos un HashMap con los nombres de todas las chicas entre nuestros amigos, y debemos dejar solo a los chicos en la lista de amigos(No sé por qué esto podría ser necesario, pero nunca se sabe). Volvamos a nuestro ejemplo con la antigua lista de amigos, cree un HasMap de chicas y elimine de la lista de amigos a todas las chicas cuyos nombres estén escritos en los valores de nuestro 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);
       }
   }
Aquí está la salida:
Mi vieja lista de amigos: [Alex, Ivy, Victor, Peter, Lenny, Olly, Stu, Scott, Olivia] lista de amigos solo de chicos: [Alex, Victor, Peter, Lenny, Stu, Scott]

Algunos casos especiales

Al comienzo de este artículo, escribí que para eliminar todos sus valores de la lista, debe usar el método ArrayList clear() . Lo es, pero por supuesto también puedes usar el método removeAll() para esto. Probablemente ya hayas adivinado cómo hacer esto:

myList.RemoveAll (myList);
Demos un ejemplo. En un ataque de sociopatía, vaciemos toda nuestra lista de amigos:

 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);
       }
   }
Aquí está la salida:
lista de amigos solo para chicos: [Alex, Victor, Peter, Lenny, Stu, Scott] mi nueva lista de amigos vacía...:[]
Al menos intentemos eliminar los elementos de colección nula de nuestra 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);
       }
   }
De acuerdo con la definición del método removeAll(), tenemos una excepción en la salida:
Mi lista de viejos amigos: [Alex, Ivy, Victor, Peter, Lenny, Olly, Stu, Scott, Olivia] Excepción en el hilo "principal" java.lang.NullPointerException
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION