这个方法,正序跟倒序的原理是什么?

public static void main(String[] args) {
Person[] arr = {new Person("1",43),
new Person("2",63),
new Person("3",13),
new Person("4",90)};

    System.out.println(Arrays.toString(arr));
    Arrays.sort(arr, new Comparator<Person>() {
        @Override
        public int compare(Person a, Person b) {
            return a.getAge()-b.getAge(); // o1.getAge()-o2.getAge()
        }
    });
    System.out.println(Arrays.toString(arr));
}

普遍一点的,数字1和2你总知道哪个大,哪个小把。
那我现在要给一堆人排序,按什么呢?
按年龄?按名字的拼音顺序?按工资收入?
只要确定了顺序,自然就能得到结果。
而Arrays.sort(),第一个参数是数组,第二个就是你要重写的比较器。
当compare 返回正数时,即认为a比b大
如果返回0,就认为他们大小相同,也会保持原来的顺序
如果返回负数,就会认为a比b小

至于排序过程中,用的那些排序算法,如快速排序,归并排序,二分排序,选择排序,插入排序,冒泡排序等等就不是你需要考虑的地方了。你只是定义一种大小规则而已。哪种排序算法更优,api会自己权衡选择的。

  1. Collections有两种比较规则方式,第一种是使用自身的比较规则: 2.第二种 :该类必须实现Comparable接口并重写comparTo方法。 this可以想象为1,传入对象o想象为2,返回1-2即按升序排序。返回2-1即按降序排序。