根据list中对象的属性去重和排序小结(必看篇)
发布时间 - 2026-01-11 01:12:25 点击率:次如下所示:
//去重
public class User {
private int id;
private String name;
private int age;
public User(){}
public User(int id, String name, int age) {
super();
this.id = id;
this.name = name;
this.age = 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 int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
public class ListTest {
/**
* 有一个List<User> list 放了五个对象:user1、user2、user3、user4、user5
User有三个属性Id、name、age
其中user2的记录大概是这样:“100”,"abc",20;
user3的记录大概是这样:“100”,“def”,20;
请问怎么才能只保留user2和user3中的一个对象,并将其中的name合并到新对象中,
新对象如“100”,“abcdef”,20
这只是举个例子,实际中有可能user4和user5与此类似,如果有id相同的两个对象,则对其进行
合并,只保留一个对象,求一个通用的方法,能筛选出对象集合中某些相同ID的两个对象,将其合并
仍保留在原list中
* @param args
*/
//list有序可重复、set无序不可重复、mapkey不允许重复,key相同的后面的value会把前面的覆盖掉
//List存放的数据,默认是按照放入时的顺序存放的,比如依次放入A、B、C,则取得时候,则也是A、B、C的顺序
public static void main(String[] args) {
List<User> list = new ArrayList<>();
list.add(new User(1,"a",20));
list.add(new User(1,"a",20));
list.add(new User(2,"a",20));
list.add(new User(3,"b",20));
list.add(new User(1,"c",20));
list.add(new User(4,"d",20));
list.add(new User(2,"e",20));
list.add(new User(1,"a",20));
/* for (User user : list) {
System.out.println(user.toString());
}
System.out.println();*/
list = mySort(list);
for (User user : list) {
System.out.println(user.toString());
}
}
public static List<User> mySort(List<User> list){
HashMap<Integer,User> tempMap = new HashMap<>();
for (User user : list) {
int key = user.getId();
// containsKey(Object key) 该方法判断Map集合对象中是否包含指定的键名。如果Map集合中包含指定的键名,则返回true,否则返回false
// containsValue(Object value) value:要查询的Map集合的指定键值对象.如果Map集合中包含指定的键值,则返回true,否则返回false
if(tempMap.containsKey(key)){
User tempUser = new User(key,
tempMap.get(key).getName() + user.getName(),
tempMap.get(key).getAge());//user.getAge();
//HashMap是不允许key重复的,所以如果有key重复的话,那么前面的value会被后面的value覆盖
tempMap.put(key, tempUser);
}else{
tempMap.put(key, user);
}
}
List<User> tempList = new ArrayList<>();
for(int key : tempMap.keySet()){
tempList.add(tempMap.get(key));
}
return tempList;
}
}
//排序=============================================
public class Student {
private int age;
private String name;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Student [age=" + age + ", name=" + name + "]";
}
}
public class ListSort {
public static void main(String[] args) {
List<Student> list = new ArrayList<Student>();
//创建3个学生对象,年龄分别是20、19、21,并将他们依次放入List中
Student s1 = new Student();
s1.setAge(20);
s1.setName("葛大");
Student s2 = new Student();
s2.setAge(19);
s2.setName("张杰");
Student s3 = new Student();
s3.setAge(21);
s3.setName("宝爷");
list.add(s1);
list.add(s2);
list.add(s3);
System.out.println("排序前:"+list);
Collections.sort(list, new Comparator<Student>(){
/*
* int compare(Student o1, Student o2) 返回一个基本类型的整型,
* 返回负数表示:o1 小于o2,
* 返回0 表示:o1和o2相等,
* 返回正数表示:o1大于o2。
*/
public int compare(Student o1, Student o2) {
//按照学生的年龄进行升序排列 ;<是降序
// /*if(o1.getAge() > o2.getAge()){
// return 1;
// }
// if(o1.getAge() == o2.getAge()){
// return 0;
// }
// return -1; */
// return o1.getAge()-o2.getAge();//升序
// return o2.getAge()-o1.getAge();//降序
return o1.getName().compareTo(o2.getName()) ;// 按照姓名升序
// return o2.getName().compareTo(o1.getName()) ;// 按照姓名降序
}
});
System.out.println("排序后:"+list);
}
}
以上这篇根据list中对象的属性去重和排序小结(必看篇)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
# java
# list
# 对象排序
# java根据List内对象的属性排序方法
# java ArrayList集合中的某个对象属性进行排序的实现代码
# java list集合排序按某一属性排序操作
# 使用list stream:对List中的对象先进行排序再获取前n个对象
# 升序
# 是这样
# 给大家
# 并将
# 降序
# 键值
# 象中
# 键名
# 中有
# 将其
# 希望能
# 与此
# 这只
# 所示
# 会把
# 这篇
# 必看
# 小编
# 到新
# 大家多多
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何处理表单验证?(Requests代码示例)
香港服务器租用费用高吗?如何避免常见误区?
node.js报错:Cannot find module 'ejs'的解决办法
Laravel怎么实现模型属性的自动加密
大连网站制作公司哪家好一点,大连买房网站哪个好?
Laravel怎么在Blade中安全地输出原始HTML内容
香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧
如何自定义safari浏览器工具栏?个性化设置safari浏览器界面教程【技巧】
Laravel DB事务怎么使用_Laravel数据库事务回滚操作
Laravel路由怎么定义_Laravel核心路由系统完全入门指南
详解Android中Activity的四大启动模式实验简述
Laravel怎么实现验证码(Captcha)功能
高防服务器租用如何选择配置与防御等级?
Laravel如何实现用户角色和权限系统_Laravel角色权限管理机制
Laravel如何使用Telescope进行调试?(安装和使用教程)
jQuery 常见小例汇总
Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)
详解jQuery中基本的动画方法
Laravel Debugbar怎么安装_Laravel调试工具栏配置指南
头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?
Linux网络带宽限制_tc配置实践解析【教程】
Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】
教你用AI润色文章,让你的文字表达更专业
,网页ppt怎么弄成自己的ppt?
齐河建站公司:营销型网站建设与SEO优化双核驱动策略
实例解析Array和String方法
Python面向对象测试方法_mock解析【教程】
深圳防火门网站制作公司,深圳中天明防火门怎么编码?
打开php文件提示内存不足_怎么调整php内存限制【解决方案】
如何有效防御Web建站篡改攻击?
Laravel如何创建自定义Artisan命令?(代码示例)
ChatGPT回答中断怎么办 引导AI继续输出完整内容的方法
如何利用DOS批处理实现定时关机操作详解
Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
Laravel如何使用Livewire构建动态组件?(入门代码)
怎么用AI帮你设计一套个性化的手机App图标?
Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲
Laravel如何记录日志_Laravel Logging系统配置与自定义日志通道
小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?
Edge浏览器如何截图和滚动截图_微软Edge网页捕获功能使用教程【技巧】
标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析
canvas 画布在主流浏览器中的尺寸限制详细介绍
Laravel如何实现模型的全局作用域?(Global Scope示例)
Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件
为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】
*服务器网站为何频现安全漏洞?
如何快速搭建支持数据库操作的智能建站平台?
如何登录建站主机?访问步骤全解析
Laravel如何实现文件上传和存储?(本地与S3配置)

