java8 stream 集合去重

1/** 2 * 3 * Description: JDK1.8的Stream操作工具类 4 * @author linan.du 5 * @date 2019年7月18日 6 * @version 1.0 7 */ 8public class StreamUtil { 9 10 /** 11 * 12 * Description: stream去重时,调用它可免除 泛型重写equals和hashcode方法 13 * 14 * 调用示例: 15 * reportPoolList是查询出来的List<ReportPool>集合,通过过滤,对postCode属性(岗位代码)进行去重,返回 16 * List<ReportPool> distinctElements = reportPoolList.stream() 17 * .filter(StreamUtil.distinctByKey(p -> p.getPostcode())) 18 * .collect(Collectors.toList()); 19 * 20 * @param keyExtractor 21 * @return 22 * @author linan.du 23 * @date 2019年7月18日 24 * 25 */ 26 public static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) { 27 Set<Object> seen = ConcurrentHashMap.newKeySet(); 28 return t -> seen.add(keyExtractor.apply(t)); 29 } 30}
  • 补充
    // 您上传文件中第1、2、5行邮箱格式有误,请调后再次上传

    StringBuffer sb = new StringBuffer(); sb.append("您上传文件中第"); errorList.stream().forEach(e -> sb.append(e.getSeq() + "、")); sb.deleteCharAt(sb.length() - 1).append("行邮箱格式有误,请调后再次上传");

点赞
收藏

评论区

加载中...

相关推荐

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

java8新特性

Stream将List转换为Map,使用Collectors.toMap方法进行转换背景:User类,类中分别有id,name,age三个属性。List集合,userList,存储User对象1、指定keyvalue,value是对象中的某个属性值。 Map<Integer,StringuserMap1userList.str

Stream流式处理&&Lambda表达式

高度抽象的集合数据处理1.使用Stream流对List进行去重、去偶数,然后查找最大值importjava.util.Arrays;importjava.util.Comparator;publicclassStream1publicstaticvoidmain(Stringargs)intmaxA

JDK1.8 之Stream API总结

Stream是Java8新增加的类,用来补充集合类。Stream代表数据流,流中的数据元素的数量可能是有限的,也可能是无限的。Stream和其它集合类的区别在于:其它集合类主要关注与有限数量的数据的访问和有效管理(增删改),而Stream并没有提供访问和管理元素的方式,而是通过声明数据源的方式,利用可计算的操作在数据源上执行,当然

Java8系列之Stream总结

流的简介  官方解释,Stream是Java8的一大亮点,它与java.io包里的InputStream和OutputStream是完全不同的概念。它也不同于StAX对XML的解析的Stream,也不是AmazonKinesis对大数据实时处理的Stream。它是对集合对象功能的增强,她专注于对集合对象进行各种非常便利、高效的聚合操作(ag

Java学习:Stream流式思想

Stream流Java8API添加了一种新的机制——Stream(流)。Stream和IO流不是一回事。流式思想:像生产流水线一样,一个操作接一个操作。使用Stream流的步骤:数据源→转换成流→操作1→操作2→……数据源(source):可以是集合、数组等。St