Arrays.sort()
public static <T> void sort(T[] a, Comparator<? super T> c) {
//<? super T>表示都是类型T的父类,包括T自己(特别注意)
if (c == null) {
sort(a);
} else {
if (LegacyMergeSort.userRequested)
legacyMergeSort(a, c);
else
TimSort.sort(a, 0, a.length, c, null, 0, 0);
}
}
Arrays.sort重写Comparator,不可以用基本类型数组,因为基本类型不是Object,更不会实现Comparator接口,自然也就无法调用compareTo方法来进行比较大小,当然也就不能用int[]数组,要想对int型排序的话,参数a、c必须用Integer[]数组才可以
但很奇怪的一点是
T是二维数组时 ,?是一维数组,这样是可以的,我理解为二维数组不是基本类型?是矩阵?(T,?)T类型的数据会转换成?类型的数据,满足这个条件<? super T>表示都是类型T的父类,包括T自己(特别注意),一维数组 super 二维数组(毕竟二维数组是在一维数组的基础上增强??)
Arrays.sort(is,new Comparator<int[]>()){
public int compare(int[] i1,int[] i2){
return i1[0]-i2[0];;
}
}
Collections.sort()
@SuppressWarnings({"unchecked", "rawtypes"})
public static <T> void sort(List<T> list, Comparator<? super T> c) {
list.sort(c);//以集合来排序
}