(一)Comparable<>接口
要排序的对象类实现Comparable<>
接口,重写其compareTo()
方法,方法体中实现对象的比较大小规则
//参数-字段=降序,字段-参数=升序。
//其实这个方法是升序还是降序,看返回值是正数还是负数,后面的比较方法一样的
@Override
public int compareTo(TopBook o) {
return o.num-num;
}
List<TopBook> allTopBooks=new LinkedList<>();
//实现排序
Collections.sort(allTopBooks);
(二)Comparator
需编写匿名内部类,先new一个Comparator
接口的比较器对象c,同时实现compare()
其方法;
然后将比较器对象c传给Collections.sort()
方法的参数列表中,实现排序功能
List<TopBook> list =new ArrayList<>();
//o1-o2升序,o2-o1降序
Collections.sort(list, new Comparator<TopBook>() {
public int compare(TopBook o1, TopBook o2) {
return o1.getNum()-o2.getNum();
}
});
Collections.sort(list, (o1, o2) -> o1.getNum()-o2.getNum());
或者
list.sort((o1, o2) -> o2.getNum()-o1.getNum());