Razlike između Collection.clear () i Collection.removeAll ()

1. Pregled

U ovom brzom vodiču naučit ćemo o dva Kolekcija metode za koje se čini da rade isto, ali nisu: čisto() i ukloniti sve().

Prvo ćemo vidjeti definicije metoda, a zatim ćemo ih koristiti u kratkim primjerima.

2. Zbirka.clear ()

Prvo ćemo zaroniti u Collection.clear () metoda. Provjerimo Javadoc metode. Prema njemu, svrha čisto() je uklanjanje svakog pojedinog elementa s popisa.

U osnovi, zovem čisto() na bilo kojem popisu rezultirat će time da popis postane prazan.

3. Collection.removeAll ()

Sada ćemo pogledati Javadoc od Collection.removeAll (). Vidimo da metoda uzima a Kolekcija kao argument. A svrha mu je dauklonite sve uobičajene elemente između popisa i zbirke.

Dakle, kada ga pozove u zbirci, uklonit će sve elemente iz proslijeđenog argumenta koji se također nalaze u zbirci koju zovemo ukloniti sve().

4. Primjeri

Pogledajmo sada neki kod kako bismo vidjeli te metode na djelu. Prvo ćemo stvoriti testnu klasu s imenom ClearVsRemoveAllUnitTest.

Nakon toga stvorit ćemo prvi test za Collection.clear ().

Inicirat ćemo zbirku Cijeli brojevi s nekoliko brojeva i nazovite čisto() na njemu tako da niti jedan element ne ostane na popisu:

@Test void whenClear_thenListBecomesEmpty () {Collection collection = new ArrayList (Arrays.asList (1, 2, 3, 4, 5)); collection.clear (); assertTrue (collection.isEmpty ()); }

Kao što vidimo, zbirka je nakon toga prazna čisto() biti pozvan.

Stvorimo drugi test s dvije zbirke, jednom s brojevima od 1 do 5, a drugom s brojevima od 3 do 7. Nakon toga nazvat ćemo ukloniti sve() na prvoj zbirci s drugom kao parametrom.

Očekivat ćemo da će u prvoj zbirci ostati samo brojevi 1 i 2 (dok je druga nepromijenjena):

@Test void whenRemoveAll_thenFirstListMissElementsFromSecondList () {Collection firstCollection = new ArrayList (Arrays.asList (1, 2, 3, 4, 5)); Zbirka secondCollection = novi 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); }

I naša su očekivanja ispunjena. U prvoj su zbirci preostali samo brojevi 1 i 2, a druga nije promijenjena.

5. Zaključak

U ovom smo članku vidjeli svrhe Collection.clear () i Collection.removeAll ().

Unatoč onome što bismo mogli pomisliti u početku, oni ne rade isto. čisto() briše svaki element iz zbirke i ukloniti sve() jedan samo uklanja elemente koji odgovaraju onima s drugog Kolekcija.

I kao i uvijek, kod se može pronaći na GitHubu.