Java转换Set <set <string>&gt;列出<list <string>&gt; </list <string> </set <string>

时间:2012-10-19 19:36:47

标签: java list collections set

在Java中,我无法从Set<Set<String>>转换为List<List<String>>,然后使用Set<Set<String>>

的内容填充此列表

这是我的代码:

Set<Set<String>> treeComps = compExtractor.transform(forest); // fine
List<List<String>> components = new List<List<String>>();     // does not work
components.addAll(treeComps);                                 // does not work

4 个答案:

答案 0 :(得分:6)

您无法实例化List接口的实例,您需要使用其中一个类似ArrayList的实现。然后你可以遍历treeComps中的外部集合,为每个内部集合创建一个新的ArrayList,在这个ArrayList上调用addAll,然后将列表添加到组件中。

List<List<String>> components = new ArrayList<List<String>>();
for( Set<String> s : treeComps )
{
  List<String> inner = new ArrayList<String>();
  inner.addAll( s );
  components.add( inner );
}

答案 1 :(得分:2)

我认为唯一的方法是迭代外集。获取内部集和用户new ArrayList<String>(innerSet)

将上述结果列表添加到外部列表。

答案 2 :(得分:1)

像这样......

Set<Set<String>> treeComps = compExtractor.transform(forest);
List<List<String>> lists = new ArrayList<List<String>>();
for (Set<String> singleSet : treeComps) {
    List<String> singleList = new ArrayList<String>();
    singleList.addAll(singleSet);
    lists.add(singleList);
}

答案 3 :(得分:0)

List<List<String>> components = new Vector<List<String>>();
List<String> n;
for( Set<String> s : trerComps ) {
   n = new Vector<String>();
   n.addAll( s );
   components.add( n);
}