Java数组排序——比较器
1 一维数组
1.1 正序
int[] nums = {5, 3, 1, 7, 6};
Arrays.sort(nums);
1.2 倒序
如果是基本数据类型的数组,如 int[]
、float[]
需要转换成相应的包装类型 Integer[]
、Float[]
- 方法一:
Integer[] nums = {5, 3, 1, 7, 6};
Arrays.sort(nums, new Comparator<Integer>() {
@Override
public int compare(Integer o1, Integer o2) {
return o2 - o1;
}
});
- 方法二:
Integer[] nums = {5, 3, 1, 7, 6};
Arrays.sort(nums, Collections.reverseOrder());
- 方法三:
Integer[] nums = {5, 3, 1, 7, 6};
Arrays.sort(nums, (o1, o2) -> o2 - o1);
2 二维数组
对二维数组进行排序:
2.1 第一维(升序)
- 按照子数组的第一个元素升序排列
int[][] points = {{2, 5}, {3, 4}, {1, 2}};
Arrays.sort(points, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
if (o1[0] > o2[0]) {
return 1;
} else if (o1[0] < o2[0]) {
return -1;
} else {
return 0;
}
}
});
排序之后如下图
2.2 第二维(降序)
- 按照子数组第二个元素的降序排列(lambda表达式)
int[][] points = {{2, 5}, {3, 4}, {1, 2}};
Arrays.sort(points, ((o1, o2) -> o2[1] - o1[1]));
排序之后如下图