Java-Commons-Collections removeAll

CollectionUtils::removeAll() Commons-Collections 3.2.1

Ich muss verrückt werden, weil es scheint, wie diese Methode macht das umgekehrte von dem, was die docs Status:

Entfernt die Elemente aus Sammlung entfernen. Das heißt, diese Methode liefert eine collection, die alle Elemente in c, die nicht entfernen.

Diesem kleinen JUnit-test

@Test
public void testCommonsRemoveAll() throws Exception {
    String str1 = "foo";
    String str2 = "bar";
    String str3 = "qux";

    List<String> collection = Arrays.asList(str1, str2, str3);
    System.out.println("collection: " + collection);

    List<String> remove = Arrays.asList(str1);
    System.out.println("remove: " + remove);

    Collection result = CollectionUtils.removeAll(collection, remove);
    System.out.println("result: " + result);
    assertEquals(2, result.size());
}

Scheitert mit

java.lang.AssertionError: expected:<2> aber war:<1>

und druckt

collection: [foo, bar, qux] 
remove: [foo] 
result: [foo]

Aus meiner Lektüre der Dokumente sollte ich erwarten, dass [bar, qux]. Was habe ich verpasst?

  • Ich habe meinen Beitrag aktualisiert, um diese zu reflektieren, da jemand mich daran erinnert - aber Apache Commons Collections 4.0 war veröffentlicht im November 2013, mit einem fix für dieses Problem.
InformationsquelleAutor markdsievers | 2011-12-04
Schreibe einen Kommentar