list对象根据对象属性去重

对List中的对象根据某个属性进行去重的情况。例如,我们有一个实体类student,其中包含属性id、name和age,现在我们有一个List<Student>,我们希望根据name属性去除重复的Student对象。

我们可以借助HashSet的特性,来实现根据对象属性去重。我们创建一个HashSet来存放对象的属性值,然后遍历List,根据属性值判断是否添加到HashSet,最后将HashSet转换成List。

public class RemoveDuplicates {

public List<Student> removeDuplicates(List<Student> list) {

Set<String> set = new HashSet<>();

List<Student> result = new ArrayList<>();

for (Student student : list) {

if (set.add(student.getName())) {

result.add(student);

}

}

return result;

}

}

利用Java 8引入的Stream API,结合lambda表达式,更优雅地实现根据对象属性去重。

public class RemoveDuplicates {

public List<Student> removeDuplicates(List<Student> list) {

return list.stream()

.collect(Collectors.toMap(Student::getName, p -> p, (p1, p2) -> p1))

.values()

.stream()

.collect(Collectors.toList());

}

}

相关推荐
Vex2une3 小时前
Windows 性能监视器发展史:从 PerfMon 计数器到 XPerf 深度诊断
windows·wpa·etw·性能监视器·perfmon·性能计数器·xperf
在角落发呆3 小时前
工具配置备份步骤:从手动备份到自动化方案
运维·windows·自动化
Sarvartha4 小时前
final 关键字
java·开发语言
2601_952047794 小时前
单一策略深度教程:用轻易云把集成任务的报错实时推送到钉钉机器人
java·机器人·钉钉
数据狐(Datafox)4 小时前
淘宝图片搜索 API 落地实战:基于以图搜货搭建跨境电商选品系统
java·大数据·微服务
Vd7H20A75 小时前
Windows 下用 llama.cpp 运行 Qwen3.8-27B 并开启 512K 上下文 完全指南
windows·llama
Escalating_xu6 小时前
【C 语言】数据在内存中的存储:补码、大小端、整型陷阱与 IEEE 754 全解析
java·c语言·网络
灯澜忆梦7 小时前
【面向对象编程C++】| 基础语法
java·c++·算法