若v1是null的话,那就说明operationInfos集合里面是有null的,因为是要根据OperationCountVO的cityId进行分组,那OperationCountVO一定不为null,建议前面直接加filter过滤掉

Map collect = operationInfos.stream().filter(Objects::nonNull).collect(Collectors.groupingBy(OperationCountVO::getCityId,

Collectors.reducing(new OperationCountVO(), (OperationCountVO v1, OperationCountVO v2) -> {

v1.setSurgeryCount(v1.getSurgeryCount() + v2.getSurgeryCount());

v1.setCityId(v2.getCityId());

return v1;

})));

刚评论发现...可能报错原因还有可能是,Collectors.reducing中的第一个参数为new OperationCountVO(),若new出来的OperationCountVO对象的surgeryCount为Integer类型,不是基本类型的话,所以没有初始化,surgeryCount就为null,在做v1.getSurgeryCount() + v2.getSurgeryCount()操作的时候就可能报错了呀

(ps:对于reducing中的第二个参数BinaryOperator,最好还是封装到OperationCountVO对象中,看起来代码更声明式一点...这样写代码太丑了...哈哈...或者写出来,写成一个静态final变量更好,到时候可以到处调用嘛)

比如直接在本类上新增一个SurgeryCount属性合并的BinaryOperator,名字就叫surgeryCountMerge

public static final BinaryOperator surgeryCountMerge = (v1, v2) -> {

v1.setSurgeryCount(v1.getSurgeryCount() + v2.getSurgeryCount());

return v1;

}

这样下面代码就可以改成

Map collect = operationInfos.stream()

.filter(Objects::nonNull)

.collect(Collectors.groupingBy(OperationCountVO::getCityId,

Collectors.reducing(new OperationCountVO(), surgeryCountMerge));

这样写了之后,其实发现题主可能做麻烦了点,最后不就是为了返回一个Map嘛,所以建议不使用groupingBy,毕竟分组返回结果是一对多这样的结构,不是一对一的结构,那直接使用toMap嘛,直接点

Map collect = operationInfos.stream()

.filter(Objects::nonNull)

.collect(Collectors.toMap(OperationCountVO::getCityId, Function.identity(), surgeryCountMerge));

这样快多了噻,还不会报错,哈哈

java8 collectors_java8的Collectors.reducing()相关推荐

  1. java实现两个时间的累加_java List 相邻两个数据累加,可以用stream的collectors.reducing实现么...

    答案2.0 害,之前上一版答案,由于需求没有理解正确,所以惨败,这次再次理清了哈需求,这哪是List合并成一个LineDto 这里不得不说哈题主(甩锅开始),非要说用collectors.reduci ...

  2. java8中的Collectors.groupingBy用法

    Collectors.groupingBy根据一个或多个属性对集合中的项目进行分组 数据准备: public Product(Long id, Integer num, BigDecimal pric ...

  3. Java造两个list_java List 相邻两个数据累加,可以用stream的collectors.reducing实现么

    答案2.0 害,之前上一版答案,由于需求没有理解正确,所以惨败,这次再次理清了哈需求,这哪是List合并成一个LineDto 这里不得不说哈题主(甩锅开始),非要说用collectors.reduci ...

  4. Java8 Stream之Collectors

    文章目录 toList.toSet toMap toConcurrentMap toCollection joining collectingAndThen groupingBy groupingBy ...

  5. Collectors.reducing总结Collectors.mapping+Collectors.reducing+TreeSet等等

    Collectors.reducing总结 1. 方法签名 一个参数 public static <T> Collector<T, ?, Optional<T>> ...

  6. java8 中的 Collectors 全解析

    1. 前言 相关的文章中提到了 Collectors .相信很多同学对这个比较感兴趣,那我们今天就来研究一下 Collectors . 2. Collectors 的作用 Collectors 是 J ...

  7. [Java8新特性]Collectors源码阅读-1 toCollections和joining等

    1.Collectors方法实现的种类 Collectors作为一个提供常用collector的静态方法类,里面的有很多公共的静态方法,大多数方法是借助new CollectorImpl来实现的,少数 ...

  8. java8 Lambda Stream collect Collectors 常用实例

    将一个对象的集合转化成另一个对象的集合 List<OrderDetail> orderDetailList = orderDetailService.listOrderDetails(); ...

  9. java8 两个list合并_深入介绍和使用 Java 8 的 Collector 接口和 Collectors 工具类

    1 概述 java.util.stream.Collector: Collector 接口用于将 Stream 流中的数据加工,转换,处理,最后返回结果. java.util.stream.Colle ...

  10. java8中 Collectors.groupingBy用法

    目录 1.数据准备: 2.分组 按照类目分组: 按照几个属性拼接分组: 根据不同条件分组 3.多级分组 4.按子组收集数据 求总数 求和 把收集器的结果转换为另一种类型 联合其他收集器 Collect ...

最新文章

  1. Vue项目中使用wangEditor富文本输入框(推荐)
  2. 知乎热议!一个博士生接受怎样的训练是完整的科研训练?
  3. 天翼云从业认证(4.12) 天翼云医疗行业解决方案
  4. 决策树随机森林GBDT
  5. three 天空球_javascript – 分配给相机的three.js天空盒
  6. JS中关于clientWidth、offsetWidth、scrollWidth
  7. Hibernate ‍java.lang.ClassCastException ERROR解决方法
  8. HYSBZ 2145 悄悄话
  9. 神牛驾到!James B. Orlin 的 O(nm)最大流算法论文翻译!!
  10. 7.10 18级多校适应训练1题解
  11. linux文件l是什么意思,linux 中 我看到lrwxrwxrwx 那个l是什么意思?
  12. elememt ui 组件 dialog使用备忘
  13. PHP PYTHON RUBY PERL
  14. Xftp:找不到匹配的outgoing encryption算法
  15. JS判断当前页面是否在微信内打开
  16. 查找java最耗费CPU线程的命令
  17. chatbot聊天机器人环境搭建以及项目运行指南
  18. 毕业后我这操蛋的五年
  19. grid布局浏览器兼容_Grid布局
  20. 转载:区块链:关于软分叉与硬分叉以及什么是共识

热门文章

  1. android 圆形头像方案,android圆形头像实现
  2. Pimple研究及PHP框架搭建
  3. 车马邮件都慢,一生只够爱一个人
  4. http.cn portal.php,短网址,短网址生成,短链接,网址缩短_ft12.com短网址
  5. 只要你足够好——写给理想受挫的人们
  6. mysql force index 语法_MySQL FORCE INDEX 强制索引使用
  7. Unity开发手游在Android平台的内存优化
  8. 红孩儿编辑器的详细设计第四部分
  9. 初识Cura3D打印开源项目
  10. 关于阿里云的直播API开发