public static void main(String[] args) {
Integer[] a = { 9, 8, 7, 2, 3, 4, 1, 0, 6, 5 };
// 定义一个自定义类MyComparator的对象
Comparator cmp = new MyComparator();
Arrays.sort(a, cmp);
// Arrays.sort(a, (o1, o2) -> o2 - o1);
for (int arr : a) {
System.out.print(arr + " ");
}
}
class MyComparator implements Comparator<Integer> {
@Override
public int compare(Integer o1, Integer o2) {
/*
* 如果o1小于o2,我们就返回正值,如果o1大于o2我们就返回负值, 这样颠倒一下,就可以实现降序排序了,反之即可自定义升序排序了
*/
System.out.println("o1="+o1+"----o2="+o2);
return o2 - o1;
}
}
Comparator接口的int compare(T o1, T o2);
方法中,o1 和 o2的在排序前集合中的顺序为:o2在o1前面
初始顺序:
9, 8, 7, 2, 3, 4, 1, 0, 6, 5
o1=8----o2=9
o1=7----o2=8
o1=2----o2=7
o1=3----o2=2
o1=3----o2=7
o1=3----o2=2
o1=4----o2=7
o1=4----o2=2
o1=4----o2=3
o1=1----o2=4
o1=1----o2=2
o1=0----o2=4
o1=0----o2=2
o1=0----o2=1
o1=6----o2=3
o1=6----o2=7
o1=6----o2=4
o1=5----o2=4
o1=5----o2=7
o1=5----o2=6
排序结果:
9 8 7 6 5 4 3 2 1 0