Java lambda 实现条件过滤,去重方法2

4 11月

前言

 

在之前的文章中,我们已经介绍过一个利用java lambda 实现条件去重的方法了。

利用之前的方法,可以实现下面的功能。

参见: 

Java8- Lambda如何实现条件去重distinct List,如何实现条件分组groupBy List

方法二

 

今天我们将介绍第二种方法,利用 java 的 collectors 和 treeset 实现去重。

我们知道 TreeSet 是可以根据传入的比较方法,自动去重的,我们就从这里入手。

我们有一个 List<User> 类似这样的对象, 要对 User 的 name 进行条件去重。

上面的代码已经根据 username 去过重了,并且转换成了 TreeSet,但我们要的是一个 list, 再通过 TreeSet 转换成 list 似乎有些麻烦,好在 Collectors 工具类提供给我们一个处理方法了。

其中 Collectors.collectingAndThen 第一个参数就是需要去重的逻辑,第二个参数就是最后返回的结果处理方法,其实是调用了 new ArrayList<>(treeSet) 这个构造函数。

如此以来就完成了我们想要的条件去重。

发表评论

电子邮件地址不会被公开。