一维数组
由与比较器在比较中的泛型需要应用类型,所以我们不能单纯使用Comparator<int>
,而是应该使用Comparator<Integer>
进行排序:
import java.util.*;
public class Main {
public static void main(String[] args){
Integer[] arr={6,9,1,2,5,3,4,3};
Arrays.sort(arr, new Comparator<Integer>() {
@Override //按照元素从大到小排
public int compare(Integer a, Integer b) {
return b-a;
}
});
for(Integer x:arr)
System.out.printf("%d ",x);
}
}
我们也可以调用naturalOrder()
和reverseOrder()
实现排序:
//从小到大排
Arrays.sort(arr, Comparator.naturalOrder());
//从大到小排
Arrays.sort(arr, Comparator.reverseOrder());
二维数组
对于二维 i n t [ ] [ ] int[][] int[][] 数组,我们也可以采取类似的方法进行排序,不过Comparator里面的泛型要是 i n t [ ] int[] int[]类型:
import java.util.*;
public class Main {
public static void main(String[] args){
int[][] reservedSeats={{1,2},{1,3},{4,5},{3,7},{6,7},{8,9},{1,10}};
int len=reservedSeats.length;
Arrays.sort(reservedSeats, new Comparator<int[]>() {
@Override //按照第一个元素从小到大排,第二个元素从大到小排
public int compare(int[] a, int[] b) {
if(a[0]!=b[0]) return a[0]-b[0];
return b[1]-a[1];
}
});
for(int i=0;i<len;i++)
System.out.printf("%d %d\n",reservedSeats[i][0],reservedSeats[i][1]);
}
}