Rozdiely medzi Collection.clear () a Collection.removeAll ()
1. Prehľad
V tomto rýchlom návode sa dozvieme asi dve Zbierka metódy, ktoré sa môžu zdať, že robia to isté, ale nie sú: jasný() a odobrať všetky().
Najprv si pozrieme definície metód a potom ich použijeme v krátkych príkladoch.
2. Collection.clear ()
Najprv sa ponoríme do Collection.clear () metóda. Poďme skontrolovať javadoc metódy. Podľa nej účel jasný() je odstrániť všetky jednotlivé prvky zo zoznamu.
Takže v podstate volanie jasný() na ľubovoľnom zozname spôsobí, že bude zoznam prázdny.
3. Collection.removeAll ()
Teraz sa pozrieme na Javadoc z Collection.removeAll (). Vidíme, že metóda trvá a Zbierka ako argument. A jeho účelom jeodstrániť všetky spoločné prvky medzi zoznamom a zbierkou.
Pri volaní na kolekciu teda odstráni všetky prvky z odovzdaného argumentu, ktoré sa tiež nachádzajú v kolekcii, na ktorú voláme odobrať všetky().
4. Príklady
Pozrime sa teraz na nejaký kód, aby sme videli tieto metódy v akcii. Najskôr vytvoríme testovaciu triedu s názvom ClearVsRemoveAllUnitTest.
Potom vytvoríme prvý test pre Collection.clear ().
Inicializujeme zbierku Celé čísla s niekoľkými číslami a zavolajte jasný() tak, aby v zozname nezostal žiadny prvok:
@Test void whenClear_thenListBecomesEmpty () {Collection collection = new ArrayList (Arrays.asList (1, 2, 3, 4, 5)); collection.clear (); assertTrue (collection.isEmpty ()); }
Ako vidíme, zbierka je potom prázdna jasný() byť volaný.
Vytvorme druhý test s dvoma zbierkami, jednu s číslami od 1 do 5 a druhú s číslami od 3 do 7. Potom zavoláme odobrať všetky() na prvej kolekcii s druhou ako parametrom.
Očakávame, že v prvej kolekcii zostanú iba čísla 1 a 2 (zatiaľ čo druhá sa nezmenila):
@Test void whenRemoveAll_thenFirstListMissElementsFromSecondList () {Collection firstCollection = new ArrayList (Arrays.asList (1, 2, 3, 4, 5)); Zbierka secondCollection = nový 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), secondCollection); }
A naše očakávania sú splnené. V prvej kolekcii zostávajú iba čísla 1 a 2 a druhá sa nezmenila.
5. Záver
V tomto článku sme videli účely Collection.clear () a Collection.removeAll ().
Napriek tomu, čo by sme si na začiatku mohli myslieť, nerobia to isté. jasný() vymaže každý prvok zo zbierky a odobrať všetky() jeden odstráni iba prvky zodpovedajúce tým z iného Zbierka.
A ako vždy, kód nájdete na GitHub.