Forskjeller mellom Collection.clear () og Collection.removeAll ()

1. Oversikt

I denne raske opplæringen lærer vi om to Samling metoder som kan synes å gjøre det samme, men som ikke er: klar() og Fjern alle().

Vi vil først se metodedefinisjonene og deretter bruke dem i korte eksempler.

2. Collection.clear ()

Vi dykker først inn i Collection.clear () metode. La oss sjekke metoden Javadoc. I følge det, meningen med klar() er å fjerne hvert enkelt element fra listen.

Så, i utgangspunktet, å ringe klar() på hvilken som helst liste vil føre til at listen blir tom.

3. Collection.removeAll ()

Vi tar nå en titt på Javadoc of Collection.removeAll (). Vi kan se at metoden tar en Samling som argument. Og formålet er åfjern alle vanlige elementer mellom listen og samlingen.

Så når den kaller den på en samling, vil den fjerne alle elementene fra det passerte argumentet som også er i samlingen som vi kaller på Fjern alle().

4. Eksempler

La oss nå se på noen koder for å se disse metodene i aksjon. Vi oppretter først en testklasse med navnet ClearVsRemoveAllUnitTest.

Etter det oppretter vi en første test for Collection.clear ().

Vi initialiserer en samling av Heltall med noen få numre og ring klar() på den slik at ingen elementer gjenstår i listen:

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

Som vi ser er samlingen tom etter klar() blir kalt.

La oss lage en andre test med to samlinger, en med tall fra 1 til 5 og den andre med tall fra 3 til 7. Etter det, vil vi ringe Fjern alle() på den første samlingen med den andre som parameter.

Vi forventer at bare tallene 1 og 2 forblir i den første samlingen (mens den andre er uendret):

@Test ugyldig 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), secondCollection); }

Og forventningene våre blir oppfylt. Bare tallene 1 og 2 er igjen i den første samlingen, og den andre er ikke endret.

5. Konklusjon

I denne artikkelen har vi sett formålene med Collection.clear () og Collection.removeAll ().

Til tross for hva vi kanskje tror først, gjør de ikke det samme. klar() sletter hvert element fra samlingen og Fjern alle() man fjerner bare elementene som samsvarer med dem fra en annen Samling.

Og som alltid kan koden bli funnet på GitHub.