CodeGym /בלוג Java /Random-HE /שיטת ArrayList removeAll() ב-Java
John Squirrels
רָמָה
San Francisco

שיטת ArrayList removeAll() ב-Java

פורסם בקבוצה
השיטה ArrayList removeAll() ב-Java אינה מסירה את כל הרכיבים מ- ArrayList תקין , כפי ששמה עשוי לרמז. אם אתה צריך פעולה זו, השתמש בשיטת ArrayList clear() . שלא כמו clear() , השיטה removeAll() מסירה את כל הפריטים מרשימה נתונה הכלולים באוסף אחר.

תחביר והצהרה removeAll().

להלן תחביר השיטה:
boolean removeAll(Collection<?> c)
כאשר c הוא אוסף המכיל אלמנטים שיש להסיר מרשימה זו. שיטה זו מחזירה true אם רשימה זו השתנתה כתוצאה מהקריאה. זה גם יכול לזרוק חריגים: ClassCastException - אם המחלקה של רכיב ברשימה זו אינה תואמת לאוסף שצוין NullPointerException - אם הרשימה מכילה אלמנט null והאוסף שצוין אינו מתיר רכיבי null, או אם האוסף שצוין הוא null

דוגמה לקוד removeAll().

נניח שיש לך רשימת חברים ברשת החברתית שלך. ובכן, זה הדבר הרגיל לעת עתה. כמו כן, נניח שאתה קפדן, והכנס את כל הרע שלך לרשימת אויבים מיוחדת, ללא קשר אם אויביך נמנים עם חבריך ברשת החברתית או לא. החלטת לנקות את רשימת החברים שלך מכל המבקשים. שיטת 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()) או מפתחות (removeAll (collection.keySet()) . בוא נדמיין שיש לנו 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() בשביל זה. בטח כבר ניחשתם איך עושים את זה:
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 מה- 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() יש לנו חריג בפלט:
רשימת החברים הישנים שלי: [אלכס, אייבי, ויקטור, פיטר, לני, אולי, סטו, סקוט, אוליביה] חריגה בשרשור "ראשי" java.lang.NullPointerException
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION