Verschillen tussen Collection.clear () en Collection.removeAll ()

1. Overzicht

In deze korte tutorial leren we er twee Verzameling methoden die hetzelfde lijken te doen, maar die niet zijn: Doorzichtig() en Verwijder alles().

We zullen eerst de methodedefinities bekijken en ze vervolgens gebruiken in korte voorbeelden.

2. Collection.clear ()

We duiken eerst in de Collection.clear () methode. Laten we de Javadoc van de methode eens bekijken. Volgens het, het doel van Doorzichtig() is om elk afzonderlijk element uit de lijst te verwijderen.

Dus eigenlijk bellen Doorzichtig() op een lijst zal ertoe leiden dat de lijst leeg wordt.

3. Collection.removeAll ()

We gaan nu kijken naar de Javadoc van Collectie.removeAll (). We kunnen zien dat de methode een Verzameling als argument. En het doel is omverwijder alle gemeenschappelijke elementen tussen de lijst en de verzameling.

Dus als het op een verzameling wordt aangeroepen, worden alle elementen uit het doorgegeven argument verwijderd die zich ook in de verzameling bevinden waarop we aanroepen Verwijder alles().

4. Voorbeelden

Laten we nu eens kijken naar wat code om die methoden in actie te zien. We maken eerst een testklas met de naam ClearVsRemoveAllUnitTest.

Daarna maken we een eerste test voor Collection.clear ().

We initialiseren een verzameling van Gehele getallen met een paar cijfers en bel Doorzichtig() erop zodat er geen element in de lijst achterblijft:

@Test ongeldig whenClear_thenListBecomesEmpty () {Verzameling verzameling = nieuwe ArrayList (Arrays.asList (1, 2, 3, 4, 5)); collection.clear (); assertTrue (collection.isEmpty ()); }

Zoals we kunnen zien is de collectie daarna leeg Doorzichtig() gebeld worden.

Laten we een tweede test maken met twee verzamelingen, een met nummers van 1 tot 5 en de andere met nummers van 3 tot 7. Daarna bellen we Verwijder alles() op de eerste collectie met de tweede als parameter.

We verwachten dat alleen de nummers 1 en 2 in de eerste verzameling blijven (terwijl de tweede ongewijzigd blijft):

@Test ongeldig whenRemoveAll_thenFirstListMissElementsFromSecondList () {Collectie firstCollection = nieuwe ArrayList (Arrays.asList (1, 2, 3, 4, 5)); Verzameling secondCollection = nieuwe 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); }

En aan onze verwachtingen wordt voldaan. Alleen de nummers 1 en 2 zijn overgebleven in de eerste collectie en de tweede is niet gewijzigd.

5. Conclusie

In dit artikel hebben we de doeleinden gezien van Collection.clear () en Collectie.removeAll ().

Ondanks wat we in eerste instantie misschien denken, doen ze niet hetzelfde. Doorzichtig() verwijdert elk element uit de verzameling en Verwijder alles() men verwijdert alleen de elementen die overeenkomen met die van een ander Verzameling.

En, zoals altijd, is de code te vinden op GitHub.