CollectionUtils::removeAll() Commons Collections 3.2.1
这个方法好像和文档中说的相反:
从 collection 中移除 remove 中的元素。也就是说,此方法返回一个包含所有不在 remove 中的 c 中元素的集合。
下面这个 JUnit 测试会让人感到困惑:
@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());
}
代码运行失败,错误信息如下:
java.lang.AssertionError: 预期值为 <2>,但实际值为 <1>
并打印如下信息:
collection: [foo, bar, qux]
remove: [foo]
result: [foo]
从我对文档的阅读来看,我应该期望[bar, qux]
。我错过了什么吗?