java8 stream 集合去重

Wesley13
• 阅读 709
/**
 * 
 * Description: JDK1.8的Stream操作工具类
 * @author linan.du
 * @date 2019年7月18日  
 * @version 1.0
 */
public class StreamUtil {

    /**
     * 
     * Description: stream去重时,调用它可免除 泛型重写equals和hashcode方法
     * 
     * 调用示例:
     * reportPoolList是查询出来的List<ReportPool>集合,通过过滤,对postCode属性(岗位代码)进行去重,返回
     * List<ReportPool> distinctElements = reportPoolList.stream()
     *                                     .filter(StreamUtil.distinctByKey(p -> p.getPostcode()))
     *                                     .collect(Collectors.toList());
     * 
     * @param keyExtractor
     * @return
     * @author linan.du
     * @date 2019年7月18日 
     *
     */
    public static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
        Set<Object> seen = ConcurrentHashMap.newKeySet();
        return t -> seen.add(keyExtractor.apply(t));
    }
}
  • 补充
    // 您上传文件中第1、2、5行邮箱格式有误,请调后再次上传

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

点赞
收藏
评论区
推荐文章
待兔 待兔
5个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
java8新特性
Stream将List转换为Map,使用Collectors.toMap方法进行转换背景:User类,类中分别有id,name,age三个属性。List集合,userList,存储User对象1、指定keyvalue,value是对象中的某个属性值。 Map<Integer,StringuserMap1userList.str
执键写春秋 执键写春秋
3年前
Stream流式处理&&Lambda表达式
高度抽象的集合数据处理1.使用Stream流对List进行去重、去偶数,然后查找最大值importjava.util.Arrays;importjava.util.Comparator;publicclassStream1publicstaticvoidmain(Stringargs)intmaxA
Wesley13 Wesley13
3年前
JDK1.8 之Stream API总结
Stream是Java8新增加的类,用来补充集合类。Stream代表数据流,流中的数据元素的数量可能是有限的,也可能是无限的。Stream和其它集合类的区别在于:其它集合类主要关注与有限数量的数据的访问和有效管理(增删改),而Stream并没有提供访问和管理元素的方式,而是通过声明数据源的方式,利用可计算的操作在数据源上执行,当然
Wesley13 Wesley13
3年前
Java8系列之Stream总结
流的简介  官方解释,Stream是Java8的一大亮点,它与java.io包里的InputStream和OutputStream是完全不同的概念。它也不同于StAX对XML的解析的Stream,也不是AmazonKinesis对大数据实时处理的Stream。它是对集合对象功能的增强,她专注于对集合对象进行各种非常便利、高效的聚合操作(ag
Wesley13 Wesley13
3年前
Java学习:Stream流式思想
Stream流Java8API添加了一种新的机制——Stream(流)。Stream和IO流不是一回事。流式思想:像生产流水线一样,一个操作接一个操作。使用Stream流的步骤:数据源→转换成流→操作1→操作2→……数据源(source):可以是集合、数组等。St
Wesley13 Wesley13
3年前
Java 8新特性之Stream 概念
Java8中有两大最为重要的改变。第一个是Lambda表达式;另外一个则是StreamAPI(java.util.stream.\)。Stream是Java8中处理集合的关键抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。使用StreamAPI对集合数据进行操作,就类似于使用SQL执行
Wesley13 Wesley13
3年前
Java8 新特性之集合操作Stream
Java8新特性之集合操作StreamStream简介Java8引入了全新的StreamAPI。这里的Stream和I/O流不同,它更像具有Iterable的集合类,但行为和集合类又有所不同。stream是对集合对象功能的增强,它专注于对集合对象进行各种非常便利、高效的聚合操作,或者大批量数据操作。
Wesley13 Wesley13
3年前
Java 8 – Filter a null value from a Stream
Java8–FilteranullvaluefromaStreampackagecom.mkyong.java8;importjava.util.List;importjava.util.stream.Collectors;importjava.util.stream.Stream;publiccla