rip*_*234 5 java collections data-structures
是否有一个类表示集合与另一个集合的串联?这个类本身应该是一个Collection,并且应该将所有方法委托给底层(内部)集合 - 不应该分配额外的内存,也不应该修改任何原始集合.
用法示例:
Collection<String> foo = ...
Collection<String> bar = ...
// this should be O(1) memory and time
Collection<String> combined = concat(foo, bar);
if (combined.contains("Zee"))
...
for (String str : combined)
System.out.println(str);
Run Code Online (Sandbox Code Playgroud)
与任何收藏品一样,请查看google-collections.如果您有Sets,特别是(不仅仅是一般集合),您需要:
Set<String> combined = Sets.union(foo, bar);
Run Code Online (Sandbox Code Playgroud)
这会创建两组的不可修改的视图.也就是说,改变foo或bar将反映在combined(但combined.add()不支持等).
对于更通用的情况,你有Iterables.concat()但只是让你迭代加入的项目,Iterable界面显然不包括contains所以你有点在那里.
google-collections(com.google.common.collect.Lists和com.google.common.collect.Collections2)中的其他集合实用程序类不包含任何串联方法.不明白为什么他们不能,但目前他们不这样做.