Forskelle mellem Collection.clear () og Collection.removeAll ()

1. Oversigt

I denne hurtige vejledning lærer vi om to Kollektion metoder, der ser ud til at gøre det samme, men som ikke er: klar() og Fjern alt().

Vi ser først metodedefinitionerne og bruger dem derefter i korte eksempler.

2. Collection.clear ()

Vi dykker først ned i Collection.clear () metode. Lad os kontrollere Javadoc af metoden. Ifølge det Formålet med klar() er at fjerne hvert enkelt element fra listen.

Så grundlæggende ringer klar() på enhver liste vil resultere i, at listen bliver tom.

3. Collection.removeAll ()

Vi kigger nu på Javadoc of Collection.removeAll (). Vi kan se, at metoden tager en Kollektion som et argument. Og formålet er atfjern alle almindelige elementer mellem listen og samlingen.

Så når det kaldes på en samling, fjerner det alle elementer fra det godkendte argument, som også er i den samling, som vi kalder på Fjern alt().

4. Eksempler

Lad os nu se på en kode for at se disse metoder i aktion. Vi opretter først en testklasse med navnet ClearVsRemoveAllUnitTest.

Derefter opretter vi en første test til Collection.clear ().

Vi initialiserer en samling af Heltal med et par numre og ring klar() på det, så der ikke er noget element tilbage på listen:

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

Som vi kan se, er samlingen tom efter klar() bliver kaldt.

Lad os oprette en anden test med to samlinger, den ene med numre fra 1 til 5 og den anden med numre fra 3 til 7. Derefter kalder vi Fjern alt() på den første samling med den anden som parameter.

Vi forventer kun, at tallene 1 og 2 forbliver i den første samling (mens den anden er uændret):

@Test ugyldigt nårRemoveAll_thenFirstListMissElementsFromSecondList () {Collection firstCollection = new ArrayList (Arrays.asList (1, 2, 3, 4, 5)); Samling secondCollection = ny 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), anden samling); }

Og vores forventninger er opfyldt. Kun numrene 1 og 2 er tilbage i den første samling, og den anden er ikke blevet ændret.

5. Konklusion

I denne artikel har vi set formålene med Collection.clear () og Collection.removeAll ().

På trods af hvad vi måske tænker i starten, gør de ikke det samme. klar() sletter hvert element fra samlingen og Fjern alt() man fjerner kun de elementer, der matcher dem, fra en anden Kollektion.

Og som altid kan koden findes på GitHub.