如何实现java8 list按照元素的某个字段去重
更新时间:2019年06月19日 11:28:31 作者:良人与我
这篇文章主要介绍了如何实现java8 list按照元素的某个字段去重,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下
list 按照元素的某个字段去重
@Data @AllArgsConstructor @NoArgsConstructor public class Student { private Integer age; private String name; }
测试数据
List<Student> studentList = Lists.newArrayList(); studentList.add(new Student(28, "river")); studentList.add(new Student(12, "lucy")); studentList.add(new Student(33, "frank")); studentList.add(new Student(33, "lucy"));
java8 通过tree set 去重
List<Student> studentDistinctList = studentList.stream() .collect(Collectors.collectingAndThen (Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(t -> t.getName()))), ArrayList::new ) ); System.out.println(new Gson().toJson(studentDistinctList));
扩展distinct 方法去重
List<Student> studentDistinct2List = studentList.stream().filter(StreamUtil.distinctByKey(t->t.getName())) .collect(Collectors.toList()); System.out.println(new Gson().toJson(studentDistinct2List));
工具类
public class StreamUtil { /** * https://stackoverflow.com/questions/23699371/java-8-distinct-by-property * @param keyExtractor * @param <T> * @return */ public static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) { Set<Object> seen = ConcurrentHashMap.newKeySet(); return t -> seen.add(keyExtractor.apply(t)); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
详解Java的MyBatis框架和Spring框架的整合运用
在Web端的SSH框架整合中Spring主要负责数据库处理,而引入MyBatis后二者的集成使用效果更佳,下面我们就来详解Java的MyBatis框架和Spring框架的整合运用2016-06-06详解java集成支付宝支付接口(JSP+支付宝20160912)
本篇文章主要介绍了java集成支付宝支付接口,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧2016-12-12
最新评论