使用Java8的stream对list中的对象进行去重
首先我们有一个对象属性如下
@Data public class Person { private String id; private String name; private String sex; }
我们根据属性name来去重,去重代码如下
List<Person> persons = new ArrayList(); //赋值初始化过程省略 List<Person> uniqueByName = persons.stream().collect( Collectors.collectingAndThen( Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(Person::getName))), ArrayList::new) );
根据name,sex两个属性去重
List<Person> persons = new ArrayList(); //赋值初始化过程省略 List<Person> uniqueByNameAndSex = persons.stream().collect( Collectors. collectingAndThen( Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getName() + ";" + o.getSex()))), ArrayList::new) );
原文地址:https://segmentfault.com/a/1190000021861772
相关推荐
-
一遍记住Java常用的八种排序算法与代码实现 Java基础
2019-1-26
-
【学习笔记】初识FreeMarker简单使用 Java基础
2019-10-5
-
【大学到研究生自学Java的学习路线】这是一份最适合普通大众、非科班的路线,帮你快速找到一份满意的工作 Java基础
2020-6-13
-
在Java中使用redisTemplate操作缓存 Java基础
2019-5-18
-
干掉状态:从session到token Java基础
2019-8-26
-
Java实现中文word2vec Java基础
2020-5-30
-
JAVA面试题 请谈谈你对Sychronized关键字的理解? Java基础
2019-7-25
-
面试算法:计算堆栈当前元素的最大值 Java基础
2019-8-22
-
如何写出和阿里大佬一样高效优雅的打码 Java基础
2020-6-15
-
线程并发volatile Java基础
2020-6-15