Arrays.sort()对二维数组进行排序

java中的Arrays.sort()方法在api中接受的单个参数只能是一维数组,那么我们想要对二维数组进行处理该怎么办?重新比较器即可,代码如下。

int[][] intervals = { { 2, 3 }, { 4, 5 }, { 6, 7 }, { 8, 9 }, { 1, 10 } };
Arrays.sort(intervals, new Comparator<int[]>() {
	@Override
	public int compare(int[] o1, int[] o2) {
		if (o1[0] == o2[0])
			return o1[1] - o2[1];
		return o1[0] - o2[0];
	}
});

代码清晰明了,学过java的人都应该看得懂,我们这里是按照o[1]的升序排列(o[0]相等的情况时),return o2[1]-o1[1]则是降序排列,这个可以根据自己的需求更改。

在Arrays类中它调用的是DualPivotQuicksort类中的sort方法,而DualPivotQuicksort存在一个常量QUICKSORT_THRESHOLD = 286,当排序长度小于这个值时使用归并排序,大于这个值时使用快排,具体的源码过于复杂,我也不知道为什么一个排序他写的变量名是e1、e2、e3什么的,瞬间不想看了。
在这里插入图片描述
在这里插入图片描述

发布了31 篇原创文章 · 获赞 0 · 访问量 337

猜你喜欢

转载自blog.csdn.net/qq_36360463/article/details/104141752