Unterschiede zwischen Collection.clear () und Collection.removeAll ()

1. Übersicht

In diesem kurzen Tutorial lernen wir zwei Collection- Methoden kennen, die anscheinend dasselbe tun, aber nicht: clear () und removeAll () .

Wir werden zuerst die Methodendefinitionen sehen und sie dann in kurzen Beispielen verwenden.

2. Collection.clear ()

Wir werden zuerst in die Collection.clear () -Methode eintauchen . Lassen Sie uns den Javadoc der Methode überprüfen. Demnach besteht der Zweck von clear () darin, jedes einzelne Element aus der Liste zu entfernen.

Wenn Sie also clear () für eine beliebige Liste aufrufen , wird die Liste leer.

3. Collection.removeAll ()

Wir werden uns jetzt das Javadoc von Collection.removeAll () ansehen . Wir können sehen, dass die Methode eine Sammlung als Argument verwendet. Der Zweck besteht darin , alle gemeinsamen Elemente zwischen der Liste und der Sammlung zu entfernen.

Wenn Sie es für eine Sammlung aufrufen, werden alle Elemente aus dem übergebenen Argument entfernt, die sich auch in der Sammlung befinden, für die wir removeAll () aufrufen .

4. Beispiele

Schauen wir uns nun einen Code an, um diese Methoden in Aktion zu sehen. Wir erstellen zuerst eine Testklasse mit dem Namen ClearVsRemoveAllUnitTest .

Danach erstellen wir einen ersten Test für Collection.clear () .

Wir werden eine Sammlung von Ganzzahlen mit einigen Zahlen initialisieren und clear () darauf aufrufen , damit kein Element in der Liste verbleibt:

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

Wie wir sehen können, ist die Sammlung nach dem Aufruf von clear () leer .

Erstellen wir einen zweiten Test mit zwei Sammlungen, eine mit Zahlen von 1 bis 5 und die andere mit Zahlen von 3 bis 7. Danach rufen wir removeAll () für die erste Sammlung mit der zweiten als Parameter auf.

Wir erwarten, dass nur die Nummern 1 und 2 in der ersten Sammlung verbleiben (während die zweite unverändert bleibt):

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

Und unsere Erwartungen werden erfüllt. Nur die Nummern 1 und 2 verbleiben in der ersten Sammlung und die zweite wurde nicht geändert.

5. Schlussfolgerung

In diesem Artikel haben wir die Zwecke von Collection.clear () und Collection.removeAll () gesehen .

Ungeachtet dessen, was wir zunächst denken könnten, tun sie nicht dasselbe. clear () löscht jedes Element aus der Sammlung und removeAll () entfernt nur die Elemente, die mit denen einer anderen Sammlung übereinstimmen .

Und wie immer ist der Code auf GitHub zu finden.