List集合按照由小到大排序或者由大到小排序
@
背景
原List<User>里面是无序的,比如从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)]
重要信息
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步