Java解决stream流Collectors.groupingBy 分组统计可能报空指针异常

这篇具有很好参考价值的文章主要介绍了Java解决stream流Collectors.groupingBy 分组统计可能报空指针异常。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在使用stream流的Collectors.groupingBy做分组统计时(示例代码如下)

	Map<String, Long> collect = list.stream().collect(Collectors.groupingBy(User::getUserName, Collectors.counting()));

如果统计的字段userName有null值则会报如下错误

java.lang.NullPointerException: element cannot be mapped to a null key

	at java.util.Objects.requireNonNull(Objects.java:228)
	at java.util.stream.Collectors.lambda$groupingBy$45(Collectors.java:907)

Java解决stream流Collectors.groupingBy 分组统计可能报空指针异常,java,开发语言
解决方法为在统计之前增加一个filter方法将null值事先过滤掉。代码如下:文章来源地址https://www.toymoban.com/news/detail-758779.html

Map<String, Long> collect = list.stream().filter((item) -> StringUtils.isNotBlank(item.getUserName()))
                .collect(Collectors.groupingBy(User::getUserName, Collectors.counting()));

到了这里,关于Java解决stream流Collectors.groupingBy 分组统计可能报空指针异常的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Collectors.groupingBy()进行分组时,分组值存在null值会报NPE(空指针)错误,使用时要注意

    1、使用Collectors.groupingBy()进行分组时,分组值存在null值。 解决办法:分组值为null时,默认值为空字符。

    2024年02月14日
    浏览(27)
  • Java Stream 处理分组后取每组最大&Stream流之list转map、分组取每组第一条&Java 8 Collectors:reducing 示例(List分组取最值)

    有一个需求功能:先按照某一字段分组,再按照另外字段获取最大的那个 先根据appId分组,然后根据versionSort取最大. JDK1.8推出的stream流能极大的简化对集合的操作,让代码更美观,老规矩,直接上代码。 取list中对象的某个属性作为唯一key,对象作为value形成一个map集合,能

    2024年02月16日
    浏览(44)
  • java根据分组函数GroupingBy进行多个条件组合分组

    在SQL中经常会用到分组,我们也常常遇到一些组合分组的场景。 java8分组 传统写法(单个字段分组) 场景:根据 城市 进行分组 使用的是方法引用:User::getCity 来完成分组 java8分组 传统写法(多个字段分组) 场景:根据 城市,性别进行分组 一般的写法会是下面的这种写法,

    2023年04月19日
    浏览(30)
  • Java8用Stream流一行代码实现数据分组统计,排序,最大值、最小值、平均值、总数、合计

    Java8对数据处理可谓十分流畅,既不改变数据,又能对数据进行很好的处理,今天给大家演示下,用Java8的Stream如何对数据进行分组统计,排序,求和等 汇总统计方法 找到汇总统计的方法。这些方法属于java 8的汇总统计类。 getAverage(): 它返回所有接受值的平均值。 getCount():

    2023年04月20日
    浏览(49)
  • 如何在Stream流中分组统计

    上面是今天碰到需求,之前就做过类似的分组统计,这个相对来说比较简单,统计的也少, 序号 和 总预约人数 这两部分交给前端了,不需要由后端统计,后端统计一下 预约日期 和 检查项目 和 预约人数 就行;

    2024年02月13日
    浏览(46)
  • 【Java基础】Stream 流中 Collectors.toMap 的用法

    Collectors.toMap() 方法是把 List 转 Map 的操作 1.1、如果不是对象,是数组,怎么转成map? 按照规范来写的话,最好所有toMap,都要将这个异常提前考虑进去,不然有时候会报重复主键异常,这也是正例的写法,上面的属于反例的写法。 2.1、Collectors.toMap 有三个重载方法:  参数解

    2024年02月14日
    浏览(33)
  • 使用Java8 Stream流中的Collectors.collectingAndThen()方法去重

    Collectors.collectingAndThen() 根据对象属性进行去重操作 Collectors.collectingAndThen()方法属于java8 Stream流中的 java.util.stream.Collectors ,此类实现了 java.util.stream.Collector 接口,还提供了大量的方法对Stream流中的元素进行 map 和 reduce 操作 在获取任务的时候,会出现id重复的状况,利用 Co

    2024年02月09日
    浏览(35)
  • java8 Stream流Collectors.toMap当value为null时报空指针异常(NPE)

    一、问题 在项目测试过程中发现当使用下面这种方法后报空指针异常(NPE): 按理说 HashMap 的 key 和 value 都是可以为 null 的,不应该报 NPE 啊,经过定位分析发现 Map 中有个键值对的 value 为 null 值,在调用 Collectors.toMap 时报了 NullPointerException 。 二、分析 Collectors.toMap 的

    2024年02月15日
    浏览(32)
  • Java stream 分组操作

    根据单/多字段分组 单字段分组可以直接使用指定字段,多字段分组则采用拼接Key的形式 单字段: 多字段: 多层级: 测试

    2024年02月15日
    浏览(24)
  • java stream实现分组BigDecimal求和,自定义分组求和

    随着微服务的发展,越来越多的sql处理被放到java来处理,数据库经常会使用到对集合中的数据进行分组求和,分组运算等等。 那怎么样使用java的stream优雅的进行分组求和或运算呢? 这里测试数据学生,年龄类型是Integer,身高类型是BigDecimal,我们分别对身高个年龄进行求和

    2024年02月01日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包