java8去掉重复对象的方法有哪些
发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,这篇"java8去掉重复对象的方法有哪些"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇
千家信息网最后更新 2025年11月07日java8去掉重复对象的方法有哪些
这篇"java8去掉重复对象的方法有哪些"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"java8去掉重复对象的方法有哪些"文章吧。
一、去除List中重复的String
public ListremoveStringListDupli(List stringList) { Set set = new LinkedHashSet<>(); set.addAll(stringList); stringList.clear(); stringList.addAll(set); return stringList;}
或使用Java8的写法:
Listunique = list.stream().distinct().collect(Collectors.toList());
二、List中对象去重
比如现在有一个 Person类:
public class Person { private Long id; private String name; public Person(Long id, String name) { this.id = id; this.name = name; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Person{" + "id=" + id + ", name='" + name + '\'' + '}'; }}重写Person对象的equals()方法和hashCode()方法:
@Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Person person = (Person) o; if (!id.equals(person.id)) return false; return name.equals(person.name); } @Override public int hashCode() { int result = id.hashCode(); result = 31 * result + name.hashCode(); return result; }下面对象去重的代码:
Person p1 = new Person(1l, "jack"); Person p2 = new Person(3l, "jack chou"); Person p3 = new Person(2l, "tom"); Person p4 = new Person(4l, "hanson"); Person p5 = new Person(5l, "胶布虫"); Listpersons = Arrays.asList(p1, p2, p3, p4, p5, p5, p1, p2, p2); List personList = new ArrayList<>(); // 去重 persons.stream().forEach( p -> { if (!personList.contains(p)) { personList.add(p); } } ); System.out.println(personList);
List 的contains()方法底层实现使用对象的equals方法去比较的,其实重写equals()就好,但重写了equals最好将hashCode也重写了。
三、根据对象的属性去重
下面要根据Person对象的id去重,那该怎么做呢?
写一个方法吧:
public static ListremoveDupliById(List persons) { Set personSet = new TreeSet<>((o1, o2) -> o1.getId().compareTo(o2.getId())); personSet.addAll(persons); return new ArrayList<>(personSet); }
通过Comparator比较器,比较对象属性,相同就返回0,达到过滤的目的。
再来看比较炫酷的Java8写法:
import static java.util.Comparator.comparingLong;import static java.util.stream.Collectors.collectingAndThen;import static java.util.stream.Collectors.toCollection;// 根据id去重 Listunique = persons.stream().collect( collectingAndThen( toCollection(() -> new TreeSet<>(comparingLong(Person::getId))), ArrayList::new) );
还有一种写法:
public staticPredicate distinctByKey(Function super T, Object> keyExtractor) { Map
以上就是关于"java8去掉重复对象的方法有哪些"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。
对象
方法
内容
写法
属性
文章
知识
篇文章
相同
代码
价值
大部分
就是
底层
更多
最好
步骤
目的
知识点
胶布
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
服务器硬件公司上市
自动化服务器的定义
流浪星球软件开发
露台效果图软件开发
服务器如何找到资源管理器
山西定制软件开发
数字孪生 软件开发
那种女生适合软件开发
如何找到网络技术
定向士官计算机网络技术好就业吗
信阳杯网络安全工作
列存文档数据库
华为服务器h22h-05服务器
计算机网络安全的主要文献
如何打开服务器端口
手机网络安全小达人
非标软件开发报价
服务器崩溃了三次
360服务器租赁
华为服务器默认管理地址6
魔兽正式服亚雷戈斯服务器
网络安全审查办公室组成单位
河南什么是软件开发推广
网络安全小贴士 小知识
辽宁网络安全保障联盟
li服务器安全攻防视频教程
不用互联网的科技
电信在线代理服务器
高能预警网络安全综述报告
移动数据库连接web