JAVA——Arrays.sort()详解
简介
Arrays.sort()是java.util.Arrays类中的一个静态方法,可以对数组进行排序,但是仅支持对一维数组进行排序,如果需要对二维数组进行排序,需要重写sort()方法中的Comparator比较器。
实例
对一维数组排序
常规
从小到大排序。
Arrays.sort(int [] a)
特定范围
Arrays.sort(int[] a, int fromIndex, int toIndex)
[fromIndex,toIndex)区间升序。
public static void main(String[] args) {
int[] points = {5,2,4,6,3,1};
Arrays.sort(points, 1,5);
System.out.println(Arrays.toString(points));
}
// [5,2,3,4,6,1]
降序
要实现降序排序,必须使用引用类型数组,不能使用基本类型数组!
public static void main(String[] args) {
Integer[] points = {5,2,4,6,3,1};
Arrays.sort(points, Collections.reverseOrder());
System.out.println(Arrays.toString(points));
}
// [6, 5, 4, 3, 2, 1]
自定义排序
自定义排序方法需要实现java.util.Comparetor接口中的compare方法。
public static void main(String[] args) {
Integer[] points = {5,2,4,6,3,1};
Arrays.sort(points, (o1, o2) -> o2 - o1);
System.out.println(Arrays.toString(points));
}
// [6, 5, 4, 3, 2, 1]
对二维数组排序
按第一列升
public static void main(String[] args) {
int[][] points = {{10, 16}, {2, 8}, {1, 20}, {6, 12}};
// 对二维数组按照每行数组的第一个元素进行排序
Arrays.sort(points, (o1, o2) -> o1[0] - o2[0]);
for (int[] point : points) {
System.out.println(Arrays.toString(point));
}
}
按第一列降
Arrays.sort(points, (o1, o2) -> o2[0] - o1[0]);
按第二列升
Arrays.sort(points, (o1, o2) -> o1[1] - o2[1]);
按第二列降
Arrays.sort(points, (o1, o2) -> o2[1] - o1[1]);
按第一列降,第二列升
Arrays.sort(points, (x, y) -> {
if (y[1] > x[1]) return 1;
else if (y[1] < x[1]) return -1;
else {
return Integer.compare(x[0], y[0]);
}
});

浙公网安备 33010602011771号