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.