对二维数组怎么排序java

ID:18976 / 打印
二维数组排序需将数组展平为一维数组或转置后按行排序:按行排序:使用 arrays.sort() 方法对展平的一维数组进行排序。按列排序:转置数组后按行排序,再恢复为原始形状。自定义排序:使用自定义比较器按特定条件对元素进行比较。

对二维数组怎么排序java

如何对二维数组进行排序

入门

对二维数组进行排序是指根据特定条件对数组中的元素进行重新排列。可以根据行或列进行排序,排序方法有多种。

按行排序

立即学习“Java免费学习笔记(深入)”;

要按行对二维数组进行排序,可以使用 Arrays.sort() 方法。该方法对一维数组进行排序,因此需要将二维数组转换为一维数组。可以使用 java.util.stream.Stream 将二维数组展平为一维数组,然后对其进行排序:

int[][] array = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};  Arrays.stream(array)  // 将二维数组展平为流     .flatMapToInt(Arrays::stream)  // 将每行展平为 IntStream     .sorted()  // 排序     .forEach(System.out::println);  // 打印排序后的元素

按列排序

要按列对二维数组进行排序,需要将数组转置。转置是指将行和列互换。转置后的数组可以按行排序,然后恢复为原始形状:

int[][] array = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};  // 转置数组 int[][] transposedArray = new int[array[0].length][array.length]; for (int i = 0; i < array.length; i++) {     for (int j = 0; j < array[0].length; j++) {         transposedArray[j][i] = array[i][j];     } }  // 按行对转置后的数组排序 Arrays.sort(transposedArray, (a, b) -> Integer.compare(a[0], b[0]));  // 恢复原始形状 for (int i = 0; i < array.length; i++) {     for (int j = 0; j < array[0].length; j++) {         array[i][j] = transposedArray[j][i];     } }

自定义排序

也可以使用自定义比较器对二维数组进行排序。自定义比较器允许根据特定条件对元素进行比较。例如,可以按元素的和对数组进行排序:

class SumComparator implements Comparator<int[]> {     @Override     public int compare(int[] a, int[] b) {         return Integer.compare(Arrays.stream(a).sum(), Arrays.stream(b).sum());     } }  Arrays.sort(array, new SumComparator());
上一篇: java怎么表示二维数组下标
下一篇: java数组怎么接收录入的数据

作者:admin @ 24资源网   2024-11-26

本站所有软件、源码、文章均有网友提供,如有侵权联系308410122@qq.com

与本文相关文章

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。