利用Comparator接口来实现:

若对Comparator接口不熟悉请先看这一篇:https://blog.csdn.net/weixin_43849277/article/details/108348592

二维数组排序,按照某一列大小对数组进行排序。二维数组的排序直接调用Arrays.sort(); 虽然不会出现编译错误,但运行时会出现以下错误提示:


说明不可以这样用,而我们又想对它排序,就可以使用Comparator来外部实现排序了,这里举一个按照第二列数字大小进行排序的例子:

public class ArrayCompare {public static void main(String[] args) {int[][] arr = new int[4][2];System.out.println("产生的二维数组arr为:");for (int i = 0; i < 4; i++) {arr[i][0] = (int)(Math.random()*10 + 1);arr[i][1] = (int)(Math.random()*10 + 2);System.out.println(Arrays.toString(arr[i]));}//arr2拷贝一份arr的值,这里没什么意义,就简单使用一下cloneint[][] arr2 = new int[4][2];arr2 = arr.clone();//arr以第二列值大小排序Arrays.sort(arr2, new Comparator<int[]>() {@Overridepublic int compare(int[] t0, int[] t1) {return t0[1] - t1[1];}});System.out.println("arr自定义排序为:");showArray(arr2);}public static void showArray(int[][] arr){for (int[] row : arr) {System.out.println(Arrays.toString(row));}}
}

排序的核心部分是:

Arrays.sort(arr2, new Comparator<int[]>() {@Overridepublic int compare(int[] t0, int[] t1) {return t0[1] - t1[1];}});

这里compare(int[] t0, int[] t1) 表示的是二维数组的某连续的两行进行比较。若想按照其他列排序只需将 return t0[1] - t1[1];改为其他列即可,比如一个n行三列数组,若想按照第三列优先比较,第三列相等的值再按第二列比较的话,可以通过return o2[2] != o1[2]? o1[2] - o2[2]:o1[1] - o2[1]; 来实现

int[][] arr = new int [7][3];for (int j = 0; j < 7; j++) {arr[j][0] = j;
}
for (int j = 0; j < 7; j++) {arr[j][1] = 170 + (int)(Math.random()*10);
}
arr[0][2] = 0;
arr[1][2] = 1;
arr[2][2] = 0;
arr[3][2] = 0;
arr[4][2] = 1;
arr[5][2] = 1;
arr[6][2] = 0;System.out.println("排序前");
for (int[] row : arr) {System.out.println(Arrays.toString(row));
}
Arrays.sort(arr, new Comparator<int[]>() {@Overridepublic int compare(int[] o1, int[] o2) {return o2[2] != o1[2]? o1[2] - o2[2]:o1[1] - o2[1];}
});
System.out.println("排序后");for (int[] row : arr) {System.out.println(Arrays.toString(row));
}


Java二维数组排序(按照某一列值大小)相关推荐

  1. java 二维数组排序

    二维数组排序 ① 实现Comparator接口 :匿名内部类实现 初始化数组:int [][]arr = new int [n][2]; 排序规则: 对于n行两列的元素,先按数组的第一列进行升序排序, ...

  2. java 二维数组排序 sort_js sort 二维数组排序的用法小结

    最近在搞js 排序的问题,因为数据库排序太耗资源,如果能转移到客户端去排序,能大大D减少服务器内存消耗.客户端的话,除了js,就是as了,可惜我as学得太烂,所以只能选择js来研究研究了...经过我的 ...

  3. Java二维数组排序

    今天在刷 力扣的时候,有道题卡住了,没办法去看题解,发现题解是将其二维数组排序了,我才猛然发现我还不了解二位数组排序的知识.所以来记录一下. 答案中的代码是这样的,假设需要排序的数组intervals ...

  4. java二维数组排序先行后列,数组知识点归纳

    ◆◆◆一.理解一维数组的定义和应用,了解二维数组和控件数组: 1.数组的概念:数组并不是一种数据类型,而是一组相同类型数据的集合. 用一个统一的名字(数组名)代表逻辑上相关的一批数据,每个元素用下标变 ...

  5. java 二维数组排序_java – 如何对二维ArrayList进行排序

    做这样的事情: final int COLUMN = 5; Comparator> myComparator = new Comparator>() { @Override public ...

  6. java 二维数组 排序_二维数组排序

    参考: https://www.cnblogs.com/rujianming/p/11779922.html https://blog.csdn.net/westwewe/article/detail ...

  7. Java黑皮书课后题第8章:*8.16(对二维数组排序)编写一个方法,使用下面的方法头对二维数组排序。这个方法首先按行排序,然后按列排序

    *8.16(对二维数组排序)编写一个方法,使用下面的方法头对二维数组排序.这个方法首先按行排序,然后按列排序 题目 题目描述 破题 代码 运行实例 题目 题目描述 *8.16(对二维数组排序)编写一个 ...

  8. Java学习----二维数组排序

    课堂代码实验 问题: (对二维数组排序)编写一个方法,使用下面方法对二维数组排序: public static void sort(int m[ ][ ]) 这个方法实现先按行排列后在按列排序. 例如 ...

  9. Java、对二维数组排序

    编写一个方法,使用下面的方法头对二维数组排序:         public static void sort(int m[][]) 这个方法首先按行排序,然后按列排序.         例如:数组{ ...

最新文章

  1. ELK+Filebeat+Kafka+ZooKeeper 构建海量日志分析平台(elk5.2+filebeat2.11)
  2. win7怎么解压rar文件_win7解压rar文件的方法
  3. nginx linux详细安装部署教程,Nginx Linux详细安装及部署实战
  4. 安装 EoLinker_4.0 开源版
  5. Atitit 多继承实现解决方案 java c#
  6. 【弃】Selenium官方文档中文版
  7. springboot--dubbo+nacos+LCN整合详解
  8. 解决IDEA连接mysql时出现Server returns invalid timezone问题一劳永逸的方法
  9. SEO当下的力量,你应该关注的4个属性
  10. 李一男再出发:电动车怎么做?
  11. 7kyu Jaden Casing Strings
  12. 关于C++中<iostream>操作算子ends显示问题
  13. 中断工作原理在现代计算机中的应用,中断、DMA、通道
  14. 最新-安装Windows与Ubuntu双系统
  15. Neutron DHCP-Agent问题分析定位(1)
  16. string和字符数组的reverse函数
  17. 大数据项目之电商数仓DataX、DataX简介、DataX支持的数据源、DataX架构原理、DataX部署
  18. Ubuntu查看内存槽的数目及内存信息
  19. Codeforces Round #834 (Div. 3) E. The Humanoid
  20. Android SDK 完整版

热门文章

  1. 【白话机器学习】算法理论+实战之AdaBoost算法
  2. 阿里巴巴版来了:“有一个程序媛女友/老婆是什么样的体验?”
  3. 2020 年值得再读一遍的网易云信技术干货 | 上篇
  4. ASP.NET Core实现类库项目读取配置文件
  5. Phalcon7 1.2.3 发布,高性能 PHP 7 框架
  6. java--Hibernate添加数据save
  7. 注册刷短信验证码的问题
  8. jquery: 一些常见的获取
  9. 2440 休眠唤醒的实现过程(作者:wogoyixikexie@gliet)
  10. 503. 下一个更大元素 II