首页 > 编程语言 > 详细

java stream distinct() 按指定对象属性进行去重

时间:2020-08-20 16:25:52      阅读:1743      评论:0      收藏:0      [点我收藏+]

1. distinct()不提供按照属性对对象列表进行去重的直接实现。它是基于hashCode()和equals()工作的。如果我们想要按照对象的属性,对对象列表进行去重,我们可以通过其它方法来实现

public static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
        Map<Object,Boolean> seen = new ConcurrentHashMap<>();
        return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
} 

  

2. 使用方法:用Stream接口的 filter()接收为参数

list.stream().filter(distinctByKey(b -> b.getName())); 

  

java stream distinct() 按指定对象属性进行去重

原文:https://www.cnblogs.com/unknows/p/13534953.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!