Java二维数组排序(按照某一列值大小)
利用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二维数组排序(按照某一列值大小)相关推荐
- java 二维数组排序
二维数组排序 ① 实现Comparator接口 :匿名内部类实现 初始化数组:int [][]arr = new int [n][2]; 排序规则: 对于n行两列的元素,先按数组的第一列进行升序排序, ...
- java 二维数组排序 sort_js sort 二维数组排序的用法小结
最近在搞js 排序的问题,因为数据库排序太耗资源,如果能转移到客户端去排序,能大大D减少服务器内存消耗.客户端的话,除了js,就是as了,可惜我as学得太烂,所以只能选择js来研究研究了...经过我的 ...
- Java二维数组排序
今天在刷 力扣的时候,有道题卡住了,没办法去看题解,发现题解是将其二维数组排序了,我才猛然发现我还不了解二位数组排序的知识.所以来记录一下. 答案中的代码是这样的,假设需要排序的数组intervals ...
- java二维数组排序先行后列,数组知识点归纳
◆◆◆一.理解一维数组的定义和应用,了解二维数组和控件数组: 1.数组的概念:数组并不是一种数据类型,而是一组相同类型数据的集合. 用一个统一的名字(数组名)代表逻辑上相关的一批数据,每个元素用下标变 ...
- java 二维数组排序_java – 如何对二维ArrayList进行排序
做这样的事情: final int COLUMN = 5; Comparator> myComparator = new Comparator>() { @Override public ...
- java 二维数组 排序_二维数组排序
参考: https://www.cnblogs.com/rujianming/p/11779922.html https://blog.csdn.net/westwewe/article/detail ...
- Java黑皮书课后题第8章:*8.16(对二维数组排序)编写一个方法,使用下面的方法头对二维数组排序。这个方法首先按行排序,然后按列排序
*8.16(对二维数组排序)编写一个方法,使用下面的方法头对二维数组排序.这个方法首先按行排序,然后按列排序 题目 题目描述 破题 代码 运行实例 题目 题目描述 *8.16(对二维数组排序)编写一个 ...
- Java学习----二维数组排序
课堂代码实验 问题: (对二维数组排序)编写一个方法,使用下面方法对二维数组排序: public static void sort(int m[ ][ ]) 这个方法实现先按行排列后在按列排序. 例如 ...
- Java、对二维数组排序
编写一个方法,使用下面的方法头对二维数组排序: public static void sort(int m[][]) 这个方法首先按行排序,然后按列排序. 例如:数组{ ...
最新文章
- ELK+Filebeat+Kafka+ZooKeeper 构建海量日志分析平台(elk5.2+filebeat2.11)
- win7怎么解压rar文件_win7解压rar文件的方法
- nginx linux详细安装部署教程,Nginx Linux详细安装及部署实战
- 安装 EoLinker_4.0 开源版
- Atitit 多继承实现解决方案 java c#
- 【弃】Selenium官方文档中文版
- springboot--dubbo+nacos+LCN整合详解
- 解决IDEA连接mysql时出现Server returns invalid timezone问题一劳永逸的方法
- SEO当下的力量,你应该关注的4个属性
- 李一男再出发:电动车怎么做?
- 7kyu Jaden Casing Strings
- 关于C++中<iostream>操作算子ends显示问题
- 中断工作原理在现代计算机中的应用,中断、DMA、通道
- 最新-安装Windows与Ubuntu双系统
- Neutron DHCP-Agent问题分析定位(1)
- string和字符数组的reverse函数
- 大数据项目之电商数仓DataX、DataX简介、DataX支持的数据源、DataX架构原理、DataX部署
- Ubuntu查看内存槽的数目及内存信息
- Codeforces Round #834 (Div. 3) E. The Humanoid
- Android SDK 完整版
热门文章
- 【白话机器学习】算法理论+实战之AdaBoost算法
- 阿里巴巴版来了:“有一个程序媛女友/老婆是什么样的体验?”
- 2020 年值得再读一遍的网易云信技术干货 | 上篇
- ASP.NET Core实现类库项目读取配置文件
- Phalcon7 1.2.3 发布,高性能 PHP 7 框架
- java--Hibernate添加数据save
- 注册刷短信验证码的问题
- jquery: 一些常见的获取
- 2440 休眠唤醒的实现过程(作者:wogoyixikexie@gliet)
- 503. 下一个更大元素 II