小编Mar*_*zon的帖子

List <List <String >>是Collection <Collection <T >>的实例吗?

我编写了这个方便的通用函数,用于将集合集合转换为单个集合:

public static <T> Set<T> makeSet(Collection<Collection<T>> a_collection) {
    Iterator<Collection<T>> it = a_collection.iterator();
    Set<T> result = new HashSet<T>();
    while (it.hasNext()) {
        result.addAll(it.next());
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)

然后我试着打电话给它:

    List<List<String>> resultLists = ... ;
    Set<String> labelsSet = CollectionsHelper.makeSet(resultLists);
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

<T>makeSet(java.util.Collection<java.util.Collection<T>>) in CollectionsHelper 
cannot be applied to (java.util.List<java.util.List<java.lang.String>>)
Run Code Online (Sandbox Code Playgroud)

现在a List 是a Collection,a String 是a T.那么为什么这不起作用,我该如何解决呢?

java generics collections covariance

8
推荐指数
2
解决办法
2149
查看次数

标签 统计

collections ×1

covariance ×1

generics ×1

java ×1