(一)Comparable<>接口

要排序的对象类实现Comparable<>接口,重写其compareTo()方法,方法体中实现对象的比较大小规则

  1. //参数-字段=降序,字段-参数=升序。
  2. //其实这个方法是升序还是降序,看返回值是正数还是负数,后面的比较方法一样的
  3. @Override
  4. public int compareTo(TopBook o) {
  5. return o.num-num;
  6. }
  1. List<TopBook> allTopBooks=new LinkedList<>();
  2. //实现排序
  3. Collections.sort(allTopBooks);

(二)Comparator

需编写匿名内部类,先new一个Comparator接口的比较器对象c,同时实现compare()其方法;
然后将比较器对象c传给Collections.sort()方法的参数列表中,实现排序功能

  1. List<TopBook> list =new ArrayList<>();
  2. //o1-o2升序,o2-o1降序
  3. Collections.sort(list, new Comparator<TopBook>() {
  4. public int compare(TopBook o1, TopBook o2) {
  5. return o1.getNum()-o2.getNum();
  6. }
  7. });
  1. Collections.sort(list, (o1, o2) -> o1.getNum()-o2.getNum());

或者

  1. list.sort((o1, o2) -> o2.getNum()-o1.getNum());