【问题标题】:Programmatically create 2D ArrayList and then create a single ArrayList from it以编程方式创建 2D ArrayList,然后从中创建一个 ArrayList
【发布时间】:2021-05-19 02:27:23
【问题描述】:

在 java 中以编程方式创建 2D ArrayList,然后从中创建一个 ArrayList。

我有一个 ArrayList<Integer> IntegerArraylist 的 5 个整数,像这样 {1,2,3,4,5};

基于此,我必须创建 2D ArrayList,例如:

ArrayList<ArrayList<String>> StringArraylist;

像这样:

{{a}, {b, c, d, e, f}, {g, h}, {i, j, k}, {l}}

现在基于此,我必须将其转换为单个 ArrayList,如下所示:

{a, b, c, d, e, f, g, h, i, j, k, l}

我们怎样才能做到这一点?

【问题讨论】:

    标签: java arraylist multidimensional-array


    【解决方案1】:
    List<String> list = new ArrayList<String>();
        for (String[] array : YOUR_2D_ARRAY) {
            list.addAll(Arrays.asList(array));
    

    【讨论】:

      【解决方案2】:

      您可以将streamsflatMap 一起使用

       Stream<String> oneDStream = StringArraylist.stream().flatMap((Function<ArrayList<String>, Stream<String>>) strings -> strings.stream());
       List<String> oneDList = oneDStream.collect(Collectors.toList());
       oneDList.forEach(s -> {
           System.out.print(" "+ s);
       });
      

      【讨论】:

      • 如何先创建二维数组
      【解决方案3】:

      我认为最简单的方法是使用 StreamAPI

      public static void main(String[] args) {
         String[][] arr = {
             {"a"},
             {"b", "c", "d", "e", "f"},
             {"g", "h"}
             // and so on
         };
      
         List<List<String>> stringArraylist = Arrays.stream(arr)
             .map(Arrays::asList)
             .collect(Collectors.toList());
          
         List<String> merged = stringArraylist.stream()
             .flatMap(List::stream)
             .collect(Collectors.toList());
      
         System.out.println(merged);
      }
      

      或者,简单地使用 for-each 循环:

      List<String> merged = new ArrayList<>();
      for(List<String> list : stringArraylist) {
          merged.addAll(list);
      }
      

      请注意,您需要使用List 接口而不是ArrayList 实现。

      【讨论】:

      • 如何先创建二维数组
      • 请举个例子。我不明白你到底想做什么。
      猜你喜欢
      • 2019-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-02
      • 1970-01-01
      • 1970-01-01
      • 2011-10-08
      • 2013-04-23
      相关资源
      最近更新 更多