比较器

一、内部比较器

image.png

  1. 写在实体类内,实体类并实现 Comparable接口的compareTo方法,其中<>为泛型参数,有点像方法的形参,占位可以与同类型进行比较,且泛型参数不能为基本数据类型。

  2. compareTo方法只是决定降序还是排序,Arrays.sort()是根据compareTo来完成降序或者升序的。

  3. 编写compareTo()方法:
    int类型排序:

    image-HDXu.png
    String类型排序

    image-zHKh.png
    double类型排序:

    image-HoKC.png

二、外部比较器

  1. 专门创建一个类来实现Comparator接口

    image-sOyG.png

  2. 外部比较器可以创建多个,根据传入Arrays.sort()来调用,Arrays.sort(students,new Compare1());前一个参数是需要比较的,后一个是调用的方法new成的对象。

  3. Comparator是一个函数的接口,可以用lamabda表达式来表述如:

    image-uNfd.png

    再继续使用三元运算符优化:

    o1.name.equals(o2.name)?o1.age==o2.age? return Double.compare(o2.score,o1.score):return o1.age-o2.age :return o2.name.compareTo(o1.name);