java - 将二维int数组按照arr[i]的和从低到高排序

标签 java arrays sorting multidimensional-array

我在对整数二维数组进行排序的作业中走到了死胡同。

指令是创建一个接受二维 int 数组的函数 (不一定是矩阵)并根据内部数组的总和对外部数组进行排序。换句话说,数组的第一个索引应该是总和最小的内部数组。

例子 - 输入 - int[][] array = {{2, 4, 1,9,9,9,9}, {6, 8}, {7, 3, 6, 5, 1}};

输出 - 数组 = {{6, 8}, {7, 3, 6, 5, 1}, {2, 4, 1,9,9,9,9}};

到目前为止,我的逻辑是创建一个新的一维数组,其中包含总和 来自主数组的每个内部数组。 并根据它进行排序。

public static int[] arraysCalculator(int[][] arr) { 
int[] sums = new int[arr.length];
int sum= 0;
for(int i = 0; i  < arr.length; i++)
{
    for(int j = 0; j < arr[i].length; j++)
    {
        sum += arr[i][j];
    }
    sums[i] = sum;
    sum = 0;
}

最佳答案

您可以通过流式传输然后调用 sum() 轻松地对 int[] 求和。从那里开始,只需调用 Arrays.sort 并使用一个比较器来比较这个总和:

Arrays.sort(array, Comparator.comparingInt(a -> Arrays.stream(a).sum()));

关于java - 将二维int数组按照arr[i]的和从低到高排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56409526/

相关文章:

java - 检查矩形列表中哪个矩形被单击的最快方法

java - 使用groupBy将列表转换为 map

java - 无法从 run 方法中访问对象的属性(方法)! Java多线程

c - Malloc 不会对超过 8 个输入进行排序

ruby - 如何打印数组的最后一个元素

linux - 使用 Linux 排序来获得标准输出结果

java - Java 7 是否对方法 Arrays.Sort 使用 Tim Sort?

Java - 如何过滤二维字符串数组

java - 部署前如何执行java程序

javascript - 更新动态文本框中的现有值时在数组中创建新条目