Stream API提供distinct()方法,该方法基于数据Object类的equals()方法返回列表的不同元素。下面先做一个数据Object类,用来发现重复数据:

public class LegacyObject {

private final UUID id;

private final String foo;

private final int bar;

public LegacyObject(UUID id, String foo, int bar) {

this.id = id;

this.foo = foo;

this.bar = bar;

}

@Override

public int hashCode() {

return Objects.hash(id);

}

// Implementation of equals() using only the id field

// Getters

}

public class DeduplicateWrapper {

private final LegacyObject object;

public DeduplicateWrapper(LegacyObject object) {

this.object = object;

}

public LegacyObject getObject() {

return object;

}

@Override

public int hashCode() {

return Objects.hash(object.getFoo());

}

// Implementation of equals() using only the foo field of the wrapped object

}

使用流API重复删除集合:

List duplicates = ...;

duplicates.stream()

.map(DeduplicateWrapper::new)

.distinct()

.map(DeduplicateWrapper::getObject);

不使用Stream的Java8之前代码

List deduplicated = new ArrayList<>();

Set wrappers = new HashSet<>();

for (LegacyObject duplicate: duplicates) {

wrappers.add(new DeduplicateWrapper(duplicate));

}

for (DeduplicateWrapper wrapper: wrappers) {

deduplicated.add(wrapper.getObject());

}

如果你足够幸运能够使用Kotlin:

val duplicates: List = ...

duplicates.distinctBy { it.foo }

stream去重_使用Java Stream API中DistinctBy删除重复数据相关推荐

  1. oracle删除表中数据_Excel工作表中,删除重复数据的2种方法解读,高效且实用!...

    在实际的工作中,经常要对工作表中重复的数据进行删除,如若数据行只有几条,则可通过人工查找出来,如若数据行较多,这种方法就费时费力,而且容易出错,造成对表格数据的准确性和个人能力的怀疑--今天,小编给大 ...

  2. Oracle中如何删除重复数据

    我们可能会出现这种情况,某个表原来设计不周全,导致表里面的数据数据重复,那么,如何对重复的数据进行删除呢? 重复的数据可能有这样两种情况,第一种时表中只有某些字段一样,第二种是两行记录完全一样. 一. ...

  3. 数据库中关于删除重复数据的方法的详解

    相信大家在实际开发中在数据库方面都遇到过很多重复数据的问题,今天就和大家谈谈关于删除重复数据的方法,为了更加直观的和更容易的掌握方法我就从建表开始到插入重复数据到删除重复数据的核心sql语句给大家演示 ...

  4. 通过stream去重_分享几种 Java8 中通过 Stream 对列表进行去重的方法

    几种列表去重的方法 在这里我来分享几种列表去重的方法,算是一次整理吧,如有纰漏,请不吝赐教.1. Stream 的distinct()方法 distinct()是Java8中 Stream 提供的方法 ...

  5. mysql中如何去除重复数据_MySQL中如何删除重复数据只保留一条

    在几千条记录里,存在着些相同的记录,如何能用SQL语句,删除掉重复的呢 1.查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断SELECT *FROM peopleWHERE p ...

  6. 如何在Excel表中快速删除重复数据

    目录 1.例如:删除英文歌重复部分 2.按键盘快捷键Ctrl+Shift+向下方向键 选中歌词部分 3.依次点击[数据][删除重复项][以当前选定区域排序][删除重复项] 4.点击[全选][确定] 1 ...

  7. speedoffice表格中怎么删除重复数据只保留一个

    工作中,在录入数据时,会出现录入重复的情况,如何找出重复的数据尤为重要.今天一起来学习一下excel怎么删除重复项只保留一个吧 1.首先选中数据区域,单击"数据"选项卡下方&quo ...

  8. 达梦数据库中如何删除重复数据

    我们在数据库运维环境中有时会出现需删除表中重复数据的情况,比如说,导入时重复导入了,这时候我们怎么办?如何删除重复的数据,保证数据的正确性和完整性? 测试环境: 操作系统:中标麒麟6.0 数据库系统: ...

  9. java读取excel某个单元格的值_[转载]Java读取Excel中的单元格数据

    目前网上能找到的读取Excel表格中数据的两种比较好的方案:PageOffice好用开发效率高:POI免费.供大家参考,针对具体情况选择具体方案. 1. PageOffice读取excel impor ...

最新文章

  1. 青少年编程竞赛交流群周报(第042周)
  2. 花了2周时间收集汇总的大厂面经,节后准备跳槽的看过来!
  3. ORACLE中对LONG类型进行处理的方法
  4. VTK:八叉树可视化用法实战
  5. 深入浅出parallelStream
  6. Linux Makefile 中的陷阱【转】
  7. 医院设置(信息学奥赛一本通-T1338)
  8. IDC:2017年全球公有云服务开支将达1225亿美元
  9. 一个自定义的C#数据库操作基础类 SqlHelper
  10. freescale 基于arm m0的单片机
  11. lambda表达式传参
  12. 计算机网络技术摘要,计算机网络技术应用和发展
  13. 15个顶级Python库,你必须要试试!
  14. TCPIP卷一(8):EIGRP的组建和邻居状态机
  15. 1213:八皇后问题1700:八皇后问题
  16. bzoj 3007 拯救小云公主
  17. 2020年中国热成像品牌崛起,高德红外跃居全球第二
  18. 已解决[W:11:55:47.235 NotebookApp] Cannot bind to localhostusing 127.0:0.1 as defaultip[winError 10055]
  19. ASEMI代理ST/意法STW78N65M5原厂渠道汽车级MOSFET
  20. Windows利用cmd循环文件文本内容自动创建对应文件

热门文章

  1. 不够优秀就不要腆着脸继续占便宜——作者:杨毅
  2. mybatis学习笔记-04-常见错误排查
  3. 计算机视觉——openCV的简介
  4. crontab 日志_聊聊老板让我删除日志文件那些事儿
  5. java集合转字符串,Java集合将字符串转换为字符列表
  6. 微信小程序js数组初始化_微信小程序学习Course 3-2 JS数组对象学习
  7. python队列怎么用_如何在Python中使用多处理队列? - python
  8. python创建长度为n的数组_在Python中建立N维数组并赋初值
  9. python编程环境安装包_Python环境安装与配置
  10. win10下VS2013+OpenCV2.4.9环境配置