2

在 Java 中,我无法从 a 转换Set<Set<String>>为 a 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

4 回答 4

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 );
}
于 2012-10-19T19:41:04.940 回答
2

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

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

于 2012-10-19T19:37:29.950 回答
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);
}
于 2012-10-19T19:42:00.107 回答
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);
}
于 2012-10-19T19:41:59.403 回答