【问题标题】:Convert 2D List to 2D ArrayList in Java在 Java 中将 2D 列表转换为 2D ArrayList
【发布时间】:2020-02-19 15:28:56
【问题描述】:

我正在尝试将 2D 列表转换为 Java 中的 2D ArrayList 然后,我将 2D ArrayList 转换为 2D Array 并实现 for 循环以返回矩阵的 2 个对角线的绝对差。

如何将 2D ArrayList arr 转换为 2D ArrayList?

这是我目前尝试将输入 List 转换为 ArrayList 的工作:

    public static int diagonalDifference(List<List<Integer>> arr) {

    //first: 2D List --> 2D ArrayList
    int[][] a = new int[arr.size()][];
    for (int i=0; i<arr.size(); i++) {
        List<Integer> row = arr.get(i);
        a[i] = row.toArray(new int[row.size()]);

    //second: 2D ArrayList --> int[][]

    //third: nested for loop through int[][]to difference between diagonals of 2d array
    }

这是我目前的完整代码。

 public static int diagonalDifference(List<List<Integer>> arr) {
    List<List<Intger>> arrList = new ArrayList<>();

    int[][] a = new int[arr.size()][];
    for (int i=0; i<arr.size(); i++) {
        List<Integer> row = arr.get(i);
        a[i] = row.toArray(new int[row.size()]);
    }

        int pri = 0;
        int sec =0;

    for(int i=0; i<a.length; i++) {
        for(int j=0; j <a.length; j++) {

            if (a[i] == a[j]) {
                pri += a[i];
            }

            if (i == a.length - j - 1) {
                sec += a[i];
            }

        }
    }
    return Math.abs(pri - sec);

}

【问题讨论】:

  • Array[][] 你确定吗?什么是等待输出?你在找Integer[][]
  • 可以使用ArrayList(Collection&lt;?&gt; collection) 构造函数(例如ArrayList&lt;Integer&gt; arrayList = new ArrayList&lt;&gt;(arr.get(i));)从任何List 创建ArrayList
  • 这很不清楚。首先它说“将 2D 列表转换为 2D ArrayList”,然后它说“将 2D ArrayList arr 转换为 2D ArrayList”并且在代码中有 int[][]
  • @SharonBenAsher 我想转换 2D List --> 2D ArrayList --> 2D ARRAY
  • 是的,@YCF_L,我的意思是说我正在寻找 int[][]

标签: java list matrix arraylist


【解决方案1】:

我想你正在寻找:

public static int[][] diagonalDifference(List<List<Integer>> arr) {
    return arr.stream()
            .map(a -> a.stream().mapToInt(Integer::valueOf).toArray())
            .toArray(int[][]::new);
}

【讨论】:

  • 这是转换成整数对象数组不是吗?但他正在寻找 int[][] 数组?两者都一样吗?
【解决方案2】:

这也应该有效:我刚刚测试过。

row.stream().mapToInt(Integer::intValue).toArray();

【讨论】:

  • 好。未能测试解决方案是受到模组和评论者打击的好方法。
猜你喜欢
  • 2017-05-31
  • 2015-09-01
  • 1970-01-01
  • 2011-01-09
  • 2013-08-14
  • 1970-01-01
  • 1970-01-01
  • 2019-02-03
  • 2022-11-03
相关资源
最近更新 更多