Java实现根据某个字段对集合进行去重并手动选择被保留的对象

ops/2024/12/22 23:56:12/

需求说明:

现有对象Student(id,name,age),并有List<Student> students集合,要求:对students集合中的对象按age去重,并保留id较大的那个对象。

Student

public class Student {private int id;private String name;private String age;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getAge() {return age;}public void setAge(String age) {this.age = age;}@Overridepublic String toString() {return "Student{" +"id=" + id +", name='" + name + '\'' +", age='" + age + '\'' +'}';}
}

实现代码:

public static void main(String[] args) {//获取集合List<Student> students = getStudentList();//输出当前集合System.out.println(students);//去重后的集合List<Student> newStudentList = new ArrayList<>();//去重字段和对象HashMap<String, Student> stuMap = new HashMap<>();//循环students.forEach(student -> {//出现age重复if (stuMap.containsKey(student.getAge())) {//老对象int oldId = stuMap.get(student.getAge()).getId();//新对象int currId = student.getId();//比较新老对象的Idif (oldId < currId) {//如果新对象Id比较大,则保留新对象stuMap.put(student.getAge(), student);}} else {//如果没有重复的直接添加stuMap.put(student.getAge(), student);}});//把数据转移到新集合里newStudentList.addAll(stuMap.values());System.out.println(newStudentList);}private static List<Student> getStudentList() {List<Student> students = new ArrayList<>();Student st1 = new Student();st1.setId(1);st1.setName("张三");st1.setAge("23");students.add(st1);Student st2 = new Student();st2.setId(2);st2.setName("李四");st2.setAge("24");students.add(st2);Student st3 = new Student();st3.setId(3);st3.setName("王五");st3.setAge("25");students.add(st3);Student st4 = new Student();st4.setId(4);st4.setName("赵六");st4.setAge("23");students.add(st4);return students;}

http://www.ppmy.cn/ops/105678.html

相关文章

推荐11款服装生产erp,产品功能一目了然!

本文将对主流的服装生产erp进行盘点&#xff0c;为企业选型提供参考。 项目由多方供应商共同负责&#xff0c;开展项目时信息无法及时更新&#xff1f;采用传统EXCEL收集更新信息&#xff0c;多次返工表单数据混乱且人工操作费时费力&#xff1f;采用社交聊天工具传达信息&…

Unity(2022.3.41LTS) - UI详细介绍-Scroll View(滚动视图)

目录 零.简介 一、基本功能与用途 二、主要组件 Rect Transform&#xff08;矩形变换&#xff09;&#xff1a; Scroll Rect&#xff08;滚动矩形&#xff09;组件&#xff1a; Scrollbar&#xff08;滚动条&#xff09;组件&#xff1a; Mask&#xff08;遮罩&#xff…

SaaS行业渠道管理的深度探索:两种增长模式哪个更强?

在当今数字化时代&#xff0c;SaaS&#xff08;Software-as-a-Service&#xff09;行业正以前所未有的速度重塑企业运营模式。随着市场的日益成熟与竞争的加剧&#xff0c;渠道管理不再仅仅是产品销售的通道&#xff0c;而是成为了SaaS企业构建生态体系、实现业务飞跃的重要策略…

分类学习器(Classification Learner App)MATLAB

在MATLAB中&#xff0c;分类学习器用于构建和评估分类模型。MATLAB提供了一些工具和功能&#xff0c;帮助你进行分类任务&#xff0c;例如分类学习器应用程序、统计和机器学习工具箱中的函数等。 导入数据 我们在打开应用程序之前的第一步将是导入我们将在工作区使用的数据。…

如何尽早地发现并抵御 DDoS 攻击?

近半年&#xff0c;随着软硬件服务的廉价化、规模化&#xff0c;国内外云厂商频繁遭受不明原因的大规模网络攻击&#xff0c;给很多网站带来了不良的影响。其实&#xff0c;DDoS 攻击这把「达摩斯之剑」一直高悬在各家互联网公司的头顶&#xff0c;虽然很多互联网企业对 DDoS 攻…

若依微服务Admin控制台不显示ruoyi-file问题解决

本地启动完若依微服务,发现Admin控制台只显示了6个服务,其中ruoyi-file启动成功,但是没有在Admin控制台中显示处理,本章问题,给出这个问题的解决办法。 一、什么是服务监控 监视当前系统应用状态、内存、线程、堆栈、日志等等相关信息,主要目的在服务出现问题或者快要出…

第T3周:天气识别

本文为&#x1f517;365天深度学习训练营 中的学习记录博客原作者&#xff1a;K同学啊 一、前期工作 本文将采用CNN实现多云、下雨、晴、日出四种天气状态的识别。较上篇文章&#xff0c;本文为了增加模型的泛化能力&#xff0c;新增了Dropout层并且将最大池化层调整成了平均池…

stm32之外部flash下载算法

文章目录 下载算法下载到芯片的核心思想算法程序中擦除操作执行流程擦除操作大致流程&#xff1a;算法程序中编程操作执行流程算法程序中校验操作执行流程 创建MDK下载算法通用流程第1步&#xff0c;使用MDK提供好的程序模板第2步&#xff0c;修改工程名第3步&#xff0c;修改使…