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

news/2024/11/19 20:43:08/文章来源:https://www.cnblogs.com/bigcat26/p/18555549

@

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

背景

原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>() {@Overridepublic 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>() {@Overridepublic 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)]

重要信息

  • 官网:https://ais.cn/u/vEbMBz


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/836988.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pta两次大作业

PTA 两次大作业总结:详细分析与实践经验 前言 回顾这次的家具强电电路模拟程序大作业,它无疑是一次极具挑战的编程与设计经历。从最初简单的电路组件模拟,到后期复杂的多设备连接和精准的控制反馈,这个过程不仅让我掌握了许多技术技能,还在思维方式、问题解决能力以及系统…

mac安装maven3.8.8

问题描述 down了一个新应用, maven依赖总是加载不到, 本地仓库也能找到, 项目启动报错 org.apache.skywalking:apm-toolkit-trace:pom:5.0.0-RC-SNAPSHOT failed to transfer from http://0.0.0.0/ during a previous attempt. This failure was cached in the local repositor…

mac 安装maven

问题描述 down了一个新应用, maven依赖总是加载不到, 本地仓库也能找到, 项目启动报错 org.apache.skywalking:apm-toolkit-trace:pom:5.0.0-RC-SNAPSHOT failed to transfer from http://0.0.0.0/ during a previous attempt. This failure was cached in the local repositor…

一个基于 .NET 8.0 构建的简单、跨平台、模块化商城系统

前言 今天给大家分享一个基于 .NET 8.0 构建的开源免费(MIT License)、简单、跨平台、模块化的商城系统:Module Shop。 主要功能销售:订单、物流。 内容:首页配置、评论、回复。 配置:国家、用户、仓库、运费、高级设置。 商品:分类、品牌、单位、选项(销售属性)、属性…

IDEA如何新增一个模块和删除一个模块

前言 大家好,我是小徐啊。今天小徐要给大家介绍下IDEA里面如何新增和删除模块。在开发过程中,我有时候会遇到多模块的项目,有时候自己也要增加相应的模块,用不同的模块去开发不同的功能。那么该如何操作呢? 如何新增模块 首先,在IDEA中,将鼠标放在项目的根目录上,然后右…

从汇编看函数调用传参过程

1 示例代码 #include <stdio.h>int func(int param1 ,int param2,int param3) {int var1 = param1;int var2 = param2;int var3 = param3;printf("var1=%d,var2=%d,var3=%d",var1,var2,var3);return var1; }int main(int argc, char* argv[]) {int result = fu…

IDEA如何导入外部依赖的jar包

前言 大家好,我是小徐啊。今天小徐要给大家介绍下,在使用IDEA开发java应用时,如何导入第三方的jar包,注意不是通过maven的方式导入。这种情况就是这个jar包比较特殊,可能并不存在于仓库中,需要手动引入。 如何导入jar包 首先,我们需要在资源目录下新建一个文件夹,我一般…

Cut the Sequence

Cut the Sequence P10977 Cut the Sequence 前言 单调队列优化 dp 的好题,思维难度大细节多。因为觉得自己看不懂其他题解,在看完 y 总的讲解后豁然开朗,所以写这篇题解来巩固一下。包括完整的细节分析和思考过程,或许很多大佬都不需要 qwq。叠甲完毕,下面开始正文。 分析…

20222408 2024-2025-1 《网络与系统攻防技术》实验五实验报告

1.实验内容 1.1实验要求 (1)选择一个DNS域名进行查询,获取如下信息:DNS注册人及联系方式、该域名对应IP地址、IP地址注册人及联系方式、IP地址所在国家、城市和具体地理位置。 (2)尝试获取QQ中某一好友的IP地址,并查询获取该好友所在的具体地理位置。 (3)使用nmap开源…

[考试记录] 2024.11.19 noip模拟赛17

T1 选取字符串warning❗:本题解 前缀 含量过高。挺典的 kmp。考虑到题目中的串都是一个串的前缀,那么所选出来的串,他们的前缀一定是最短的那个串。不妨直接枚举每一个前缀,也就是枚举每一个串,看他们是否可以作为前缀出现,hash即可,复杂度 \(\mathcal{O}(N^2)\)。换个…

【淘汰9成NLP工程师的常识题】多头注意力相对于多头注意力有什么优势?

【淘汰9成NLP工程师的常识题】多头注意力相对于多头注意力有什么优势? 重要性:★★★ 💯 这是我【淘汰9成NLP工程师的常识题】多头注意力相对于多头注意力有什么优势? 重要性:★★★ 💯这是我常用的一个面试题。看似简单的基础常识题,但在面试中能准确回答的不足10% …

多校A层冲刺NOIP2024模拟赛24

多校A层冲刺NOIP2024模拟赛24\(T1\) A. 选取字符串 \(100pts\)考虑建出失配树,然后等价于询问 \(\sum\limits_{S \sube \{ 0,1,2, \dots ,n \},|S|=k}dep_{\operatorname{LCA}\{ S \}}^{2}\) 。不妨从 \(\operatorname{LCA}\) 的角度考虑,统计 \(x\) 能作为多少个 \(|S|\) 的…