我试图在Java中将2D列表转换为2D ArrayList,然后将2D ArrayList转换为2D数组,并实现for循环,以返回矩阵的两个对角线的绝对差。
如何将2D ArrayList arr
转换为2D ArrayList?
到目前为止,我在尝试将输入列表转换为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);
}
发布于 2020-02-19 15:40:29
我想你是在找:
public static int[][] diagonalDifference(List<List<Integer>> arr) {
return arr.stream()
.map(a -> a.stream().mapToInt(Integer::valueOf).toArray())
.toArray(int[][]::new);
}
发布于 2020-02-19 15:59:44
这也应该有效:我刚才测试过了。
row.stream().mapToInt(Integer::intValue).toArray();
https://stackoverflow.com/questions/60303777
复制相似问题