Java比较器
Comparator
自己创建的类组成的列表,如果没有重写排序的方法,那么就没办法对它进行排序,这时就能手动建立一个专属于它的比较器,来实现对这个列表的排序,Comparator 这个接口就能实现
1 |
|
list和set都是Collection的子类,Collections类仅由静态方法组合或返回集合,它包含对集合进行操作的多态算法
在这里使用Collections里的sort方法,对son这个list排序,但Person这个类是我自己创建的,无法进行排序,所以重写了compare方法,对这个list进行了排序
t1-t2是升序,t2-t1是降序
理解:
- 如果是t1-t2,当传进来的两个元素,t1比t2大,那么就会返回一个大于0的数,说明这个值要进行一次交换,把小的放在前面,小于0则不较换
- 如果是t2-t1,当传进来的两个元素,t1比t2大,那么就会返回一个小于0的数,不用进行交换,就把大的放在了前面,小的放在了后面,大于0就进行交换
Comparable
Comparable 是一个接口,对实现它的每个类的对象强加一个整体排序,这个排序被称为类的自然排序,类的compareTo方法被称为其自然比较方法
而自己创建的类没有 compareTo方法,所以在创建类的时候就可以继承 Comparable 这个接口,实现它的 compareTo 方法
1 |
|
使用:
1 |
|
调用 Collections 类里的sort这个静态方法,就是在调用 compareTo,重写后就能对这个列表排序了
没想到泛型这东西还是没有理解透,翻看了好几次 Java泛型这篇博客,看来写博客还是有用的,可以快速回忆自己当时是怎么想的