一、概述
()是类中的一个静态方法,可以对数组进行排序,但是仅支持对一维数组进行排序,如果需要对二维数组进行排序,需要重写sort()方法中的Comparator比较器。
二、案例代码
方式一:
public static void main(String[] args) {
int[][] points = {{10, 16}, {2, 8}, {1, 6}, {6, 12}};
// 对二维数组按照每行数组的第一个元素进行排序
(points, new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
// 按照从小到大排序
return o1[0] - o2[0];
}
});
for (int[] point : points) {
for (int i : point) {
(i + " ");
}
();
}
}
方式二:使用Lambda表达式的方式对Comparator比较器进行简写(JDK1.8+)
public static void main(String[] args) {
int[][] points = {{10, 16}, {2, 8}, {1, 6}, {6, 12}};
// 对二维数组按照每行数组的第一个元素进行排序
(points, (o1, o2) -> {
// 按照从小到大排序
return o1[0] - o2[0];
});
for (int[] point : points) {
for (int i : point) {
(i + " ");
}
();
}
}
方式三:使用()方法
static <T> Comparator<T> comparingInt(ToIntFunction<? super T> keyExtractor)
该方法接收一个函数作为参数,从类型T中提取一个int类型的排序键,并返回一个与该排序键进行比较的Comparator。
public static void main(String[] args) {
int[][] points = {{10, 16}, {2, 8}, {1, 6}, {6, 12}};
// 对二维数组按照每行数组的第一个元素进行排序
(points, (o -> o[0]));
for (int[] point : points) {
for (int i : point) {
(i + " ");
}
();
}
}
三、代码截图
1 6
2 8
6 12
10 16