从其他两个集合创建集合

时间:2014-07-07 11:36:56

标签: java generics collections

如果我有2个通用集合,那么在C#中

SthCollection<Sth>

SthElseCollection<SthElse>

我可以创建第三个像

SthAndSthElseCollection<Sth, SthElse>

(其中Sth和SthElse是某些对象的列表)。

我怎样才能“迁移”到Java?我可以用枚举或其他集合类型吗?我很感激这种事情的良好联系。谢谢你的帮助

3 个答案:

答案 0 :(得分:2)

org.apache.commons.collections.CollectionUtils有一个union方法,可以从2个集合创建一个Collection。

以下是链接:http://commons.apache.org/proper/commons-collections/javadocs/api-3.2.1/org/apache/commons/collections/CollectionUtils.html

答案 1 :(得分:1)

如果两种类型之间唯一的常见超类型为Object,则使用

List<Object> union = new ArrayList<Object>();
union.addAll(collectionOfSth);
union.addAll(collectionOfSthElse);

如果你想要的是Set,你可以对Set做同样的事情。

请注意,这将创建一个副本,而不是两个集合的视图。如果您想要的是两组联合的视图,那么请查看Guava Sets.union()Iterables.concat()

答案 2 :(得分:0)

您可以使用Guava:

final Collection<T> col1  = ...;
final Collection<T> col2  = ...;
final Iterable<T> combined = Iterables.concat(col1, col12);

http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/Iterables.html#concat(java.lang.Iterable...)