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]));
排序之后如下图


本文详细介绍了如何使用Java对一维整数数组进行正序和倒序排序,包括基本类型数组转换和自定义Comparator。同时,展示了二维数组按第一维度升序和第二维度降序的排序方法。
1162

被折叠的 条评论
为什么被折叠?



