ההבדלים בין Collection.clear () ל- Collection.removeAll ()

1. סקירה כללית

במדריך מהיר זה נלמד על שניים אוסף שיטות שנראה שעושות את אותו הדבר, אך אינן: ברור() ו להסיר את כל().

ראשית נראה את הגדרות השיטה ואז נשתמש בהן בדוגמאות קצרות.

2. Collection.clear ()

ראשית נצלול אל ה Collection.clear () שיטה. בואו נבדוק את Javadoc של השיטה. לפיה, המטרה של ברור() זה להסיר כל אלמנט אחד מהרשימה.

אז, בעצם, להתקשר ברור() בכל רשימה תביא לרשימה לריקה.

3. Collection.removeAll ()

כעת נסתכל על ג'אוודוק של Collection.removeAll (). אנו יכולים לראות שהשיטה לוקחת א אוסף כוויכוח. ומטרתו היאהסר את כל האלמנטים הנפוצים בין הרשימה לאוסף.

לכן, כשקוראים לזה על אוסף, הוא יסיר את כל האלמנטים מהוויכוח שהועבר שנמצאים גם באוסף שאליו אנו קוראים להסיר את כל().

4. דוגמאות

בואו נסתכל על קוד כלשהו כדי לראות את השיטות הללו בפעולה. תחילה ניצור שיעור מבחן עם השם ClearVsRemoveAllUnitTest.

לאחר מכן, ניצור מבחן ראשון עבור Collection.clear ().

אנו מאותחל אוסף של שלמים עם מספר מספרים והתקשר ברור() עליו כך שלא יישאר שום אלמנט ברשימה:

@Test בטל כאשר Clear_thenListBecomesEmpty () {אוסף אוסף = ArrayList חדש (Arrays.asList (1, 2, 3, 4, 5)); collection.clear (); assertTrue (collection.isEmpty ()); }

כפי שאנו רואים האוסף ריק לאחר ברור() נקרא.

בואו ניצור מבחן שני עם שני אוספים, אחד עם מספרים מ -1 עד 5 והשני עם מספרים מ -3 עד 7. לאחר מכן, אנו מתקשרים להסיר את כל() על האוסף הראשון עם השני כפרמטר.

אנו מצפים שרק המספרים 1 ו -2 יישארו באוסף הראשון (בעוד השני אינו משתנה):

@Test בטל whenRemoveAll_thenFirstListMissElementsFromSecondList () {אוסף firstCollection = ArrayList חדש (Arrays.asList (1, 2, 3, 4, 5)); אוסף secondCollection = ArrayList חדש (Arrays.asList (3, 4, 5, 6, 7)); firstCollection.removeAll (secondCollection); assertEquals (Arrays.asList (1, 2), firstCollection); assertEquals (Arrays.asList (3, 4, 5, 6, 7), אוסף שני); }

והציפיות שלנו נענות. רק המספרים 1 ו -2 נותרו באוסף הראשון והשני לא שונה.

5. מסקנה

במאמר זה ראינו את המטרות של Collection.clear () ו Collection.removeAll ().

למרות מה שאנחנו עשויים לחשוב בהתחלה, הם לא עושים את אותו הדבר. ברור() מוחק כל אלמנט מהאוסף ו להסיר את כל() האחד מסיר רק את האלמנטים התואמים לאלה מאחר אוסף.

וכמו תמיד, ניתן למצוא את הקוד ב- GitHub.