java8去掉重复对象的方法有哪些
发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇"java8去掉重复对象的方法有哪些"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇
千家信息网最后更新 2026年10月31日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安全错误
数据库的锁怎样保障安全
广东万易互联网科技有限公司惠州分公司
互联网科技深圳
科技互联网公司装修
网络科技有限互联网
万易互联网科技
九亚互联网科技
美国互联网黑科技
融势互联网科技
润盈互联网科技
互联网科技网站
中国最先进互联网科技公司
互联网实体化科技化
互联网系的金融科技公司
广州恒生互联网科技有限
互联网科技产业特征
互联网科技研发水平
扫呗互联网科技有限公司
广西科技产业互联网是什么
长沙渺峰互联网科技有限公司
现代科技的标志之一的互联网
精品咖啡豆
互联网扶贫科技
迪茉互联网科技
郑州华宇互联网科技
互联网科技公司介绍
互联网还是高科技吗
未来五年的互联网科技
西安小鹰速贷互联网科技有限公司
广西科技产业互联网是什么
互联网科技快速发展优美句子