List集合按照由小到大排序或者由大到小排序

在这里插入图片描述

文章目录

  • 背景
  • 原代码
  • 由小到大排序
  • 由大到小排序

背景

原List里面是无序的,比如从redis查找等情况,查出来的是无序的,现在想按照由小到大排序或者由大到小排序。

原代码

List<User> list = new ArrayList<>();
list.add(new User(3, "c", new Date(1686402103000L), new Date(1688994103000L)));
list.add(new User(1, "a", new Date(1686402103000L), new Date(1688994103000L)));
list.add(new User(2, "b", new Date(1686402103000L), new Date(1688994103000L)));
System.out.println("原顺序" + list);

结果展示:
原顺序[User(id=3, name=c, beginTime=Sat Jun 10 21:01:43 CST 2023, endTime=Mon Jul 10 21:01:43 CST 2023), User(id=1, name=a, beginTime=Sat Jun 10 21:01:43 CST 2023, endTime=Mon Jul 10 21:01:43 CST 2023), User(id=2, name=b, beginTime=Sat Jun 10 21:01:43 CST 2023, endTime=Mon Jul 10 21:01:43 CST 2023)]

由小到大排序

要按照对象的 ID 对 List 进行排序,可以使用 Java 中的 Comparator 接口和 Collections 类的 sort 方法。假设你有一个包含对象的 List,每个对象都有一个包含 ID 的属性。
首先,需要创建一个实现了 Comparator 接口的类,用于定义比较规则。在比较规则中,我们将根据对象的 ID 进行比较。
要控制按照大到小或小到大的顺序对 List 进行排序, 可以根据比较结果返回正数、负数或零。如果想要按照从小到大的顺序进行排序,可以保持原有的比较逻辑不变;如果想要按照从大到小的顺序进行排序,只需要反转比较结果即可。

Collections.sort(list, new Comparator<User>() {
    @Override
    public int compare(User obj1, User obj2) {
        return Integer.compare(obj1.getId(), obj2.getId());
    }
});
System.out.println("由小到大排序" + list);

结果展示:
由小到大排序[User(id=1, name=a, beginTime=Sat Jun 10 21:01:43 CST 2023, endTime=Mon Jul 10 21:01:43 CST 2023), User(id=2, name=b, beginTime=Sat Jun 10 21:01:43 CST 2023, endTime=Mon Jul 10 21:01:43 CST 2023), User(id=3, name=c, beginTime=Sat Jun 10 21:01:43 CST 2023, endTime=Mon Jul 10 21:01:43 CST 2023)]

由大到小排序

Collections.sort(list, new Comparator<User>() {
    @Override
    public int compare(User obj1, User obj2) {
        return -Integer.compare(obj1.getId(), obj2.getId());
    }
});
System.out.println("由大到小排序" + list);

结果展示:
由大到小排序[User(id=3, name=c, beginTime=Sat Jun 10 21:01:43 CST 2023, endTime=Mon Jul 10 21:01:43 CST 2023), User(id=2, name=b, beginTime=Sat Jun 10 21:01:43 CST 2023, endTime=Mon Jul 10 21:01:43 CST 2023), User(id=1, name=a, beginTime=Sat Jun 10 21:01:43 CST 2023, endTime=Mon Jul 10 21:01:43 CST 2023)]

你可能感兴趣的:(JAVA相关,list,windows,List排序,List由小到大排序,List由大到小排序)