前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Java基础】Stream流操作对象去重

【Java基础】Stream流操作对象去重

作者头像
零点
发布2024-05-26 08:35:11
1980
发布2024-05-26 08:35:11
举报
文章被收录于专栏:微科技微科技

前言

Stream流已经被广泛应用于Java的开发中,本章将简单介绍Stream流的distinct()方法进行对象去重的处理。

去重原理

Stream流中的distinct()去重默认是根据Object中的equals()方法进行去重,而Object中的equals()方法实际为 == 的比较。如果需要对对象进行去重时则需要重写equals和haseCode方法。

案例展示

1.实体类进行改造

  • 新增一个java实体类。本文以Author为例。实体类如下。
代码语言:javascript
复制
 public class Author {

  private Long id;

  private String name;
 }
  • 实体类重写equals和haseCode方法,或者增加注解实现。两种实现方式选一即可 a.注解实现方式,注解实现方式默认会对比实体类中的所有属性是否相同(equals比较)
代码语言:javascript
复制
@EqualsAndHashCode 
public class Author {

 private Long id;

 private String name;
}

b.重写equals和hashCode方法,使用该方式进行去重的话,可以根据某个或者某几个字段进行去重。(这里以根据id去重为例)

代码语言:javascript
复制
 public class Author {

  private Long id;

  private String name;
 
 
 @Override
 public boolean equals(Object o){
    if(this == o) return true;
    if(o == null || getClass() != o.getClass()) return false;
    Author author = (Author) o;
    return Objects.equals(id,author.id);
 }

 @Override
 public int hashCode(){
    return Objects.hash(id);
 } 
}

结束!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-05-24 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • 去重原理
      • 案例展示
      • 结束!
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档