使用Stream流对集合中根据多个元素进行去重

本文介绍如何使用 Java 的 Stream API 在大数据量的情况下高效地去除重复数据。通过示例代码展示了如何利用 TreeSet 结合自定义比较器来实现复杂数据类型的去重,并最终收集到 ArrayList 中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近工作中需要在有重复数据的数据表中查出数据集合并且不能重复,但由于数据量太大就不好用group by分组,这里用一次Stream的去重操作

oldSegments.stream().collect(Collectors.collectingAndThen(
      Collectors.toCollection(() -> new TreeSet<>(
           Comparator.comparing(o -> 
           		o.getDptTime() + ";" + o.getArrTime() + ";" + o.getDate() + ";" + o.getDptAirport() + ";" + o.getArrAirport() + ";" + o.getFlightCode()))), ArrayList::new));

这样看的更简洁

dishList.stream().collect(Collectors.collectingAndThen(
     Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(Dish::getId))), ArrayList::new));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值