zoukankan      html  css  js  c++  java
  • Java8 stream 操作 GroupBy 设置键允许为null

    1. 使用groupBy时,如果分组的 key 为 null,会抛出异常,可以写如下工具类规避这个问题:

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.List;
    import java.util.Map;
    import java.util.function.Function;
    import java.util.stream.Collector;
    import java.util.stream.Collectors;
    
    /**
     * Java8 stream操作 GroupBy 设置键允许为null
     */
    public class StreamGroupByUtil {
        public static <T, A> Collector<T, ?, Map<A, List<T>>> groupByWithNullKeys(Function<? super T, ? extends A> classifier) {
            return Collectors.toMap(
                    classifier,
                    Collections::singletonList,
                    (List<T> oldList, List<T> newEl) -> {
                        List<T> newList = new ArrayList<>(oldList.size() + 1);
                        newList.addAll(oldList);
                        newList.addAll(newEl);
                        return newList;
                    }
            );
        }
    }

    2. 使用方式:

    Map<Integer, List<ClassA>> map = classAList.stream()
                    .collect(StreamGroupByUtil.groupByWithNullKeys(ClassA::getParentId));
  • 相关阅读:
    第四周作业及总结
    第三周作业及其总结
    第二周作业及总结
    我所敬佩的老师
    秋季学习总结
    自我介绍
    寒三总结
    2019春第7周作业
    2019春第六周作业
    2019春第五周作业
  • 原文地址:https://www.cnblogs.com/miaoying/p/14804635.html
Copyright © 2011-2022 走看看