CollectionUtils ::
removeAll()公用集合3.2.1
我一定要疯了,因为似乎此方法正在做与文档状态相反的操作:
从集合中移除remove中的元素。也就是说,此方法返回一个集合,其中包含c中所有不在remove中的元素。
这个小小的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]
。我错过了什么?
编辑2014年1月1日, Apache Commons Collections
4.0终于在2013年11月21日发布,其中包含针对此问题的修复程序。
链接到
CollectionUtils.java
有问题的行(1688年至1691年),并确认该方法先前已中断:
/*
...
* @since 4.0 (method existed in 3.2 but was completely broken)
*/
public static <E> Collection<E> removeAll(final Collection<E> collection, final Collection<?> remove) {
return ListUtils.removeAll(collection, remove);
}
原始答案
不,你不疯。removeAll()
实际上是(错误地)调用retainAll()
。
这是中的错误CollectionUtils
,影响版本3.2。它已经修复,但仅在4.0分支中。
https://issues.apache.org/jira/browse/COLLECTIONS-349
作为进一步的证明,这是到源代码的链接:
http://svn.apache.org/repos/asf/commons/proper/collections/tags/COLLECTIONS_3_2/src/java/org/apache/commons/collections/CollectionUtils.java
查看以下行:
public static Collection removeAll(Collection collection, Collection remove) {
return ListUtils.retainAll(collection, remove);
}
是的…坏了!
我有一个包含以下内容的EXCEL CSV文件: 如您所见,标头有字符串,没有引用。 使用此代码: 此命令的输出: 是单元素图! 使用级联键“access_id;logicalgate” 为什么解析器缺少标头分离?
sdiff key1 key2...keyN 返回所有给定key的差集 sdiffstore dstkey key1...keyN 同sdiff,并同时保存差集到dstkey下
sunion key1 key2...keyN 返回所有给定key的并集 sunionstore dstkey key1...keyN 同sunion,并同时保存并集到dstkey下
sinter key1 key2...keyN 返回所有给定key的交集 sinterstore dstkey key1...keyN 同sinter,但是会同时将交集存到dstkey下
问题内容: 我一直遇到这个问题: 我想让hibernate管理一个表示集合集合的表。例如: 地图地图 套装清单 清单地图 例如,我希望能够代表这一点: 作为一个表: 没有自定义的hibernate代码似乎是不可能的,我不介意。但是我希望有人对自定义代码的外观有所指导。 我应该扩展AbstractPersistentCollection吗? CompositeUserType? 可以管理多个表是否正
简介 Illuminate\Support\Collection 类提供了一个更具可读性的、更便于处理数组数据的封装。具体例子看下面的代码。我们使用了 collect 函数从数组中创建新的集合实例,对其中的每个元素运行 strtoupper 函数之后再移除所有的空元素: $collection = collect(['taylor', 'abigail', null])->map(function
集合 对于数组与哈希,倾向使用字面量语法来构建实例(除非你需要给构造器传递参数)。 # 差 arr = Array.new hash = Hash.new # 好 arr = [] hash = {} 当创建一组元素为单词(没有空格或特殊字符)的数组时,倾向使用 %w 而不是 []。此规则只适用于数组元素有两个或以上的时候。 # 差 STATES = ['draft', 'open', 'clos
集合 Scala有一个非常通用,丰富,强大,可组合的集合库;集合是高阶的(high level)并暴露了一大套操作方法。很多集合的处理和转换可以被表达的简洁又可读,但不审慎地用它们的功能也会导致相反的结果。每个Scala程序员应该阅读 集合设计文档;通过它可以很好地洞察集合库,并了解设计动机。 总使用最简单的集合来满足你的需求 层级 集合库很大:除了精心设计的层级(Hierarchy)——根是 T