首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >List集合按照由小到大排序或者由大到小排序

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

原创
作者头像
刘大猫
发布于 2024-11-19 20:38:27
发布于 2024-11-19 20:38:27
5460
举报
文章被收录于专栏:JAVA相关JAVA相关

@toc

背景

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

代码语言:java
复制
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 进行排序, 可以根据比较结果返回正数、负数或零。如果想要按照从小到大的顺序进行排序,可以保持原有的比较逻辑不变;如果想要按照从大到小的顺序进行排序,只需要反转比较结果即可。

代码语言:java
复制
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)

由大到小排序

代码语言:java
复制
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)

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 背景
  • 由小到大排序
  • 由大到小排序
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档