【问题标题】:List<List<Integer>> to 2-D array conversion (int[][]) [duplicate]List<List<Integer>> 到二维数组转换 (int[][]) [重复]
【发布时间】:2020-08-24 04:15:01
【问题描述】:

我想将List&lt;List&lt;Integer&gt;&gt; 转换为java 中的二维数组。我可以使用以下代码做到这一点,但问题是我的二维数组使用原始数据类型。

Integer[][] array = new Integer[resultList.size()][];
        for (i = 0; i < resultList.size(); i++) {
            ArrayList<Integer> row = (ArrayList<Integer>) resultList.get(i);
            array[i] = row.toArray(new Integer[row.size()]);
        }

【问题讨论】:

  • ANKUR YADAV - 如果其中一个答案解决了您的问题,您可以通过将其标记为已接受来帮助社区。接受的答案有助于未来的访问者自信地使用该解决方案。查看meta.stackexchange.com/questions/5234/… 了解如何操作。

标签: java list arraylist collections wrapper


【解决方案1】:

听起来您想要int[][] 而不是Integer[][]。在这种情况下,我会选择:

int[][] result = resultList.stream()                                
       .map(l -> l.stream().mapToInt(e -> e).toArray()) 
       .toArray(int[][]::new);

【讨论】:

    【解决方案2】:

    您可以通过迭代List&lt;List&lt;Integer&gt;&gt; 并将List&lt;Integer&gt; 的元素复制到int [][] array 的相应行中来实现。

    import java.util.Arrays;
    import java.util.List;
    
    public class Main {
        public static void main(String[] args) {
            List<List<Integer>> list = List.of(List.of(10, 20), List.of(5, 15));
            int[][] array = new int[list.size()][];
            for (int i = 0; i < list.size(); i++) {
                array[i] = new int[list.get(i).size()];
                for (int j = 0; j < list.get(i).size(); j++) {
                    array[i][j] = list.get(i).get(j);
                }
            }
    
            // Display array[][]
            System.out.println(Arrays.deepToString(array));
        }
    }
    

    输出:

    [[10, 20], [5, 15]]
    

    【讨论】:

      猜你喜欢
      • 2016-12-26
      • 2020-02-02
      • 2021-07-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-24
      • 2012-12-09
      • 1970-01-01
      相关资源
      最近更新 更多