当前位置: 首页 > news >正文

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

需求说明:

现有对象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;}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Vue前端路由详解——以Ruoyi框架为案例学习
  • 华为OD机试真题-日志采集-2024年OD统一考试(E卷)
  • 【软件逆向】第37课,软件逆向安全工程师之标志寄存器,每天5分钟学习逆向吧!
  • 基于Bert-base-chinese训练多分类文本模型(代码详解)
  • Windows上模拟Linux系统(不用装Linux系统了),可执行Linux所有命令:MobaXterm
  • opencv入门教程
  • js延迟加载的方式有哪些?
  • 告别懵逼——前端项目调试与问题排查方法小结
  • wsl下将Ubuntu从c盘移动到其他盘
  • 构建高效智慧水务平台的关键要素有哪些?
  • 解释 JVM 的内存模型(堆、栈、方法区等),并简述如何通过调整 JVM 参数来优化应用程序的性能?
  • 视频:Python深度学习量化交易策略、股价预测:LSTM、GRU深度门控循环神经网络|附代码数据...
  • 零工经济下的外卖骑手:多样性与困境的交织
  • iscntrl函数讲解 <ctype.h>头文件函数
  • 人工智能与机器学习原理精解【15】
  • [Vue CLI 3] 配置解析之 css.extract
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 【Leetcode】104. 二叉树的最大深度
  • ➹使用webpack配置多页面应用(MPA)
  • C++入门教程(10):for 语句
  • CAP理论的例子讲解
  • Elasticsearch 参考指南(升级前重新索引)
  • Eureka 2.0 开源流产,真的对你影响很大吗?
  • Fabric架构演变之路
  • Java Agent 学习笔记
  • Java应用性能调优
  • js ES6 求数组的交集,并集,还有差集
  • js如何打印object对象
  • mockjs让前端开发独立于后端
  • React 快速上手 - 07 前端路由 react-router
  • Shadow DOM 内部构造及如何构建独立组件
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 基于 Babel 的 npm 包最小化设置
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 小程序测试方案初探
  • Java数据解析之JSON
  • 国内开源镜像站点
  • ​补​充​经​纬​恒​润​一​面​
  • # 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项
  • #if和#ifdef区别
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • (day 12)JavaScript学习笔记(数组3)
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (附源码)计算机毕业设计SSM保险客户管理系统
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (文章复现)基于主从博弈的售电商多元零售套餐设计与多级市场购电策略
  • (转)mysql使用Navicat 导出和导入数据库
  • (转)程序员疫苗:代码注入
  • .NET 8.0 发布到 IIS
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .net 发送邮件