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());

}

}

相关推荐
ajassi20002 分钟前
开源 java android app 开发(十二)封库.aar
android·java·linux·开源
q567315238 分钟前
Java使用Selenium反爬虫优化方案
java·开发语言·分布式·爬虫·selenium
心灵宝贝12 分钟前
WinHex 20.8-SR1 安装教程详细步骤+下载
windows
kaikaile199512 分钟前
解密Spring Boot:深入理解条件装配与条件注解
java·spring boot·spring
hnlucky19 分钟前
安装vue的教程——Windows Node.js Vue项目搭建
前端·javascript·vue.js·windows·node.js
守护者17027 分钟前
JAVA学习-练习试用Java实现“一个词频统计工具 :读取文本文件,统计并输出每个单词的频率”
java·学习
bing_15838 分钟前
Spring Boot 中ConditionalOnClass、ConditionalOnMissingBean 注解详解
java·spring boot·后端
ergdfhgerty40 分钟前
斐讯N1部署Armbian与CasaOS实现远程存储管理
java·docker
勤奋的知更鸟1 小时前
Java性能测试工具列举
java·开发语言·测试工具
三目君1 小时前
SpringMVC异步处理Servlet
java·spring·servlet·tomcat·mvc