[关闭]
@File 2019-11-27T08:51:26.000000Z 字数 1027 阅读 65

自定义排序

java


继承 Comparable

  1. // 继承 Comparable
  2. public class Test1 implements Comparable<Test1>{
  3. private int order;
  4. private String name;
  5. public Test1(int order, String name) {
  6. this.order = order;
  7. this.name = name;
  8. }
  9. /**
  10. * 重写 compareTo 的比较逻辑
  11. * @param o 上一个比较对象
  12. * return 0 代表等于
  13. */
  14. @Override
  15. public int compareTo(Test1 o) {
  16. // 上一个对象值 - 当前对象值 = 大到小
  17. return o.order - order;
  18. }
  19. }
  1. public static void main(String[] args) {
  2. // 模拟需排序数据
  3. ArrayList<Test1> list = new ArrayList<>();
  4. list.add(new Test1(2,"222222"));
  5. list.add(new Test1(5,"555555"));
  6. list.add(new Test1(3,"333333"));
  7. // 排序
  8. Collections.sort(list);
  9. System.out.println(list);
  10. }

自定义 Comparator

方式1:lambda定义规则

  1. public static void main(String[] args) {
  2. // 模拟需排序数据
  3. ArrayList<Test1> list = new ArrayList<>();
  4. list.add(new Test1(2,"222222"));
  5. list.add(new Test1(5,"555555"));
  6. list.add(new Test1(3,"333333"));
  7. // 参数2 - 参数1 = 大到小
  8. // 也可以用 方法2 取代lambda表达式
  9. Collections.sort(list, (o1, o2) -> o2.getOrder() - o1.getOrder());
  10. System.out.println(list);
  11. }

方式2:通过实现Comparator接口自定义规则类

  1. class MyComparator implements Comparator<Test1> {
  2. @Override
  3. public int compare(Test1 o1, Test1 o2) {
  4. return o2.getOrder() - o1.getOrder();
  5. }
  6. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注