CodeGym /Java блог /Случаен /Метод ArrayList removeAll() в Java
John Squirrels
Ниво
San Francisco

Метод ArrayList removeAll() в Java

Публикувано в групата
Методът ArrayList removeAll() в Java не премахва всички елементи от правилния ArrayList , Howто предполага името му. Ако имате нужда от тази операция, използвайте метода ArrayList clear() . За разлика от clear() , методът removeAll() премахва всички елементи от даден списък, които се съдържат в друга колекция.

removeAll() синтаксис и декларация

Ето синтаксиса на метода:

boolean removeAll(Collection<?> c)
Където c е колекция, която съдържа елементи, които трябва да бъдат премахнати от този списък. Този метод връща true, ако този списък се промени в резултат на извикването. Също така може да хвърля изключения: ClassCastException — ако класът на елемент от този списък е несъвместим с указаната колекция NullPointerException — ако списъкът съдържа нулев елемент и указаната колекция не позволява нулеви елементи or ако указаната колекция е нулева

removeAll() пример за code

Да приемем, че имате списък с приятели във вашата социална мрежа. Е, това е обичайното нещо за сега. Освен това да кажем, че сте педантичен и въведете всичките си недоброжелатели в специален списък с врагове, независимо дали враговете ви са сред приятелите ви в социалната мрежа or не. Решихте да изчистите списъка си с приятели от всички недоброжелатели. Методът removeAll() определено ще помогне с това:

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);
       }
   }
Резултатът е:
Моят стар списък с приятели: [Алекс, Айви, Виктор, Питър, Лени, Оли, Стю, Скот, Оливия] Всички мои врагове: [Бен, Скот, Чък, Оли, Сам] нов списък с приятели без врагове: [Алекс, Айви, Виктор, Питър, Лени, Стю, Оливия]
Както можете да видите, методът изтри вашите врагове Оли и Скот. Не си имал врагове Бен, Чък и Сам в списъка си с приятели. Вероятно сте забелязали, че според декларацията на метода removeAll() можете да изтриете от вашия списък не само стойности от друг списък, но и от произволна колекция. Нека да вземем пример с HashMap . В този случай трябва изрично да посочите, че искате да премахнете онези записи, които съвпадат, например със стойности (removeAll (collection.values()) or ключове (removeAll (collection.keySet()) . Нека си представим, че имаме a HashMap с имената на всички момичета сред нашите приятели и трябва да оставим само момчета в списъка с приятели(Не знам защо това може да е необходимо, но никога не се знае). Нека се върнем към нашия пример със стария списък с приятели, да създадем HasMap за момичета и да премахнем от списъка с приятели всички момичета, чиито имена са записани в стойностите на нашия 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);
       }
   }
Ето резултата:
Моят стар списък с приятели: [Алекс, Айви, Виктор, Питър, Лени, Оли, Стю, Скот, Оливия] Списък с приятели само за момчета: [Алекс, Виктор, Питър, Лени, Стю, Скот]

Някои специални случаи

В началото на тази статия писах, че за да премахнете всички негови стойности от списъка, трябва да използвате метода ArrayList clear() . Така е, но разбира се можете да използвате метода removeAll() за това. Вероятно вече сте се досетor How да направите това:

myList.RemoveAll (myList);
Да дадем пример. В пристъп на социопатия нека изпразним целия си списък с приятели:

 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);
       }
   }
Ето резултата:
приятелски списък само за момчета: [Алекс, Виктор, Питър, Лени, Стю, Скот] новият ми празен списък с приятели...:[]
Нека поне да се опитаме да премахнем null-collection елементи от нашия 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);
       }
   }
Според дефиницията на метода removeAll() имаме изключение в изхода:
Моят стар списък с приятели: [Алекс, Айви, Виктор, Питър, Лени, Оли, Стю, Скот, Оливия] Изключение в нишката "main" java.lang.NullPointerException
Коментари
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION