【问题标题】:Java convert Set<Set<String>> to List<List<String>>Java 将 Set<Set<String>> 转换为 List<List<String>>
【发布时间】:2012-10-19 19:36:47
【问题描述】:

在 Java 中,我无法将 Set&lt;Set&lt;String&gt;&gt; 转换为 List&lt;List&lt;String&gt;&gt;,然后用 Set&lt;Set&lt;String&gt;&gt; 的内容填充此列表

这是我的代码:

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

【问题讨论】:

    标签: java list collections set


    【解决方案1】:

    您不能实例化 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 );
    }
    

    【讨论】:

    • 为什么不只是components.add(new ArrayList&lt;String&gt;(s))
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      这样的……

      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);
      }
      

      【讨论】:

        【解决方案4】:
        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);
        }
        

        【讨论】:

        • 无法实例化List...这是一个接口!
        • 一些评论会对 OQ 有所帮助
        猜你喜欢
        • 2022-01-05
        • 1970-01-01
        • 2021-09-17
        • 2012-08-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-03
        • 1970-01-01
        相关资源
        最近更新 更多