JavaStream|JavaStream 常用操作(三) 按对象属性去重复

distinct()不提供按照属性对对象列表进行去重的直接实现。它是基于hashCode()和equals()工作的。如果我们想要按照对象的属性,对对象列表进行去重,我们可以通过其它方法来实现。如下代码段所示:static Predicate distinctByKey(Function keyExtractor) { Map seen = new ConcurrentHashMap<>(); return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null; } 上面的方法可以被Stream接口的 filter()接收为参数,如下所示:list.stream().filter(distinctByKey(b -> b.getName()));

    推荐阅读