Stream中toMap引发NullPointerException

如何利用GMS构建地下水数值模拟模型? 第一步:点图中三维网格的图标然后点Grid→Create Grid这个界面是用于创建一个有限差分网格的设置窗口。它允许你定义网格在三维空间中的范围、分辨率以及其他相关属性。这个界面提供了一个直观的方式来定义一个三维的有限差分网格,你需要指定每个维度上的范围、划分的单元格数量,以及一些控制单元格大小分布和网格方向的参数。这个网格通常会被用于数值模拟,例如地下水流模拟。在点击 "OK" 之前,请务必仔细检查所有参数是否符合你的建模需求。1. X-Dimension (X 轴维度)2. Y-Dimension ( 阅读详情

1、引发NullPointerException的代码如下:

List<SelfSettlementCardInfoDto> selfSettlementCardInfoDtos =
                selfCardAdapterManager.listSelfSettlementCardInfoDtoByCardIds(queryDto.getPartnerId(), cardIds
                        , false);
Map<Long, String> cardIdCardNoTokenMap = selfSettlementCardInfoDtos.stream()
                .collect(Collectors.toMap(SelfSettlementCardInfoDto::getId, SelfSettlementCardInfoDto::getCardNoToken));

其中selfSettlementCardInfoDtos中的cardNoToken有可能为空。

习惯性地认为hashmap支持指针和值为null,而stream中的toMap()方法也是用HashMap实现的,因此看到这个地方报NullPointerException的时候,很奇怪。

2、分析

查看toMap()源码:
toMap
进入merge()方法:
merge
看到:

Objects.requireNonNull(remappingFunction);
Objects.requireNonNull(value);

大概就知道了:toMap方法不允许null值

因此:
Stream中toMap不允许key和value为null

3、改进方法:

1、不用toMap方法

Map<Long, String> cardIdCardNoTokenMap = selfSettlementCardInfoDtos.stream()
                .collect(HashMap::new, (m,v)->m.put(v.getId(), v.getCardNoToken()), HashMap::putAll);

2、在流中加上判空过滤

Map<Long, String> cardIdCardNoTokenMap = selfSettlementCardInfoDtos.stream().filter(t -> t.getCardNoToken() != null)
                .collect(Collectors.toMap(SelfSettlementCardInfoDto::getId, SelfSettlementCardInfoDto::getCardNoToken));
【ChangeCLIP】Remote sensing change detection with multimodal vision-language representation learning ChangeCLIP论文及代码使用详解。持续更新变化检测最新论文,欢迎订阅本专栏。 阅读详情

相关推荐

PostgreSQL数据库全攻略:从入门到精通

本文是一份PostgreSQL数据库综合指南,涵盖安装配置、基础操作和高级管理。主要内容包括:1) PostgreSQL简介与各平台安装方法;2) 数据库基本操作,如创建数据库/表、CRUD操作、用户权限管理;3) 高级功能包括索引优化、事务控制、视图、存储过程、触发器和扩展模块;4) 数据库管理维护,涉及配置调优、备份恢复、性能监控和日常维护;5) 安全设置与高可用方案。指南提供了从入门到进阶的实用知识,强调结合官方文档进行深入学习,帮助用户高效使用这一功能强大的开源关系型数据库系统。

索大神的博客 1970

Java stream流toMap使用过程中空指针问题

我们需要知道toMap是怎么帮我们封装数据的,先搞明白toMap的原理,点击源码可以看到他并不是通过map中的put方法封装数据,而是使用的merge,那么merge又是个什么东西呢?2、在使用toMap前过滤数据,可以使用stream的filter把空值过滤掉,或者使用removeIf。通过对应sql,从数据库查询结果看有条数据值为null,因此在toMap的时候报错。查看当前方法上面的注释信息,在注释这里看到一个关键的词。,这不就是我们出现的问题吗?1、如果这条数据是垃圾数据,直接删掉就好了。

迷途小书童的博客 2296

基于TI MSPM0的PS2双轴按键摇杆模块ADC+GPIO驱动移植实战

本文详细介绍了在TI MSPM0微控制器上驱动PS2双轴按键摇杆模块的完整实战流程。通过SysConfig图形化工具配置ADC与GPIO引脚,并编写了包含ADC采样、按键检测及数据处理的驱动代码,实现了对摇杆X/Y轴模拟量及按键数字量的稳定读取,为嵌入式控制项目提供了可直接移植的解决方案。

weixin_42465140的博客 84

线上问题:Stream toMap value为null时抛空指针

1 问题复现 使用stream的toMap方法从List<对象A>转Map<String, String>, 当对象A中的属性值为null的属性转换为Map的value时,使用toMap会抛出异常。 即: 对象:UserEntity属性nickname值为null,将nickname作为Map的value,uid作为key,抛异常的代码片段如下: List<UserEntity> userEntityList1 = new ArrayList<>();

天然玩家的博客 5563

RT-Thread stm32h7使用串口DMA

stm32h7在rtthread中无法使用串口DMA,通过更改驱动代码使其支持串口DMA

qq_35141454的博客 2287

告别Godot默认编辑器:手把手教你用VSCode配置C#开发环境(附中文注释避坑指南)

本文详细介绍了如何将VSCode配置为Godot引擎的C#开发环境,提升游戏开发效率。从环境准备、扩展配置到解决中文编码问题,提供完整的避坑指南和高级调试技巧,帮助开发者充分利用VSCode的智能补全和调试功能,打造高效工作流。

weixin_30596023的博客 191

JAVA8新特性stream流收集为Map,value为null导致空指针的问题

stream -> collect -> Map value:null 空指针的情况

wsen1229的博客 1万+

从零构建锂电池主动均衡系统:Simulink仿真中的Buck-Boost拓扑实战指南

本文详细介绍了如何在Simulink中从零构建基于Buck-Boost拓扑的锂电池主动均衡系统。通过仿真环境搭建、参数优化、控制策略设计和性能评估,为工程师提供了完整的实战指南,帮助快速验证和优化均衡算法,提升电池组一致性与寿命。

gitlab7runner的博客 898

java stream collect toMap nullPointException异常

记java stream toMap的坑 java8中提供了Stream API这种非常方便的api流处理类,里边丰富的api可以使代码中的数据像在使用sql一样进行过滤等的操作。其中stream.collect(Collectors.toMap) 用来将一个集合构建一个映射关系map也是经常用来使用; 例如: Map<String, String> map = list.stream().collect(Collectors.toMap( ...

weixin_40493969的博客 4638

Godot 城市模拟 – 005 OpenStreetMap 介绍:数据结构与详细示例

**摘要:OpenStreetMap(OSM)是一个开源协作奔驰地图的全球地图项目,采用社区编辑模式Tube数据自由共享。其核心数据结构包括节点(Node)、路径(Way)和关系-关系(Relation),通过标签(Tag)描述属性。节点代表坐标点,路径由节点序列组成线或面,关系则关联多个元素表达复杂地理实体。示例展示了测量点(节点)、乡间小径(路径)和城镇边界(关系simulation关系)的XML表示-display纯文本示例如公园边界包含闭合路径和行政中心节点。OSM的轻量级数据模型支持ising开放

mmx_2022的博客 1322

MSPM0G3507+逐飞库:5分钟搞定KEIL环境配置与LED闪烁(附常见错误解决)

本文详细介绍了如何使用MSPM0G3507微控制器和逐飞库快速配置KEIL开发环境,并实现LED闪烁功能。从芯片支持包安装、逐飞库工程配置到烧录调试,提供了完整的步骤和常见错误解决方案,帮助开发者5分钟内完成环境搭建。

lambda的博客 1197

Stream中toMap引发NullPointerException____Stream的执行流程

Stream中toMap引发NullPointerException 1、引发NullPointerException的代码如下: List<SelfSettlementCardInfoDto> selfSettlementCardInfoDtos = selfCardAdapterManager.listSelfSettlementCardInfoDtoByCardIds(queryDto.getPartnerId(), cardIds

qq_43842093的博客 1246

CAN接受和发送失败的原因有哪些---之前调试MCP2515驱动时,数据一直发不出去,三个发送邮箱都被占满.至今未解决,读寄存器-总线错误

0.CAN总线错误分析与解决–讲的最精辟的放在最前面 我们知道CAN总线上的每个节点往总线上发送数据的同时会同时读取总线上的数据,并与自己发送的数据作对比。—CAN仲裁??? CAN总线错误分别有发送和接收错误计数,计数达到一定的累计以后就会产生CAN BUS OFF, 这说明CAN总线上出现了严重的错误。如下图CAN总线产生错误后的状态转换机制 如果出现了BUS OFF,总线上的节点需要做一些动作,例如重启CAN控制器或是重新上电,但是这些都只是一些补救措施,最根本的还是需要找到引起BUS OFF的根源

dianqicyuyan的博客 2万+

Java 8 Stream槽点之toMap引发的NullPointerException异常

众所周知,Java 8 Stream,是我们Java程序员的福音,可以简洁、高效的编写代码,可变通性的帮助我们开发项目,实现业务。然而,现实是,提供具体快捷方式的同时,也存在着潜在的危险,就比如说Stream中的toMap操作,就让博主掉入坑中而不能自拔。 有这样一个场景:我需要通过仓库编号去获取每个订单的发货仓库名称,进而用来填充要查询的订单属性。但是在此之前,我需要获取到全部仓库编号与名称的...

谦蓦的博客 7248

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Collectors.toMap()引起的NullPointerException

日常Exception

@GhostQinMo 374

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

JAVA8 Collectors.toMap value为null报错

Root Causejava.lang.NullPointerException java.util.HashMap.merge(HashMap.java:1224) java.util.stream.Collectors.lambda$toMap$58(Collectors.java:1320) java.util.stream.ReduceOps$3Reducin...

学医救不了中国人 1万+

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

java中stream的Collectors.toMap常见踩坑点

如果转换为map后可能出现null的value, 会抛出异常, 需先过滤掉null值value.如果转换为map后可能出现重复key, 默认会抛出异常, 需指定合并策略.如果转换为map后可能出现null的key, 不会抛出异常.

yngzh的博客 41

使用stream的Collectors.toMap()方法常见的两个问题

使用stream的Collectors.toMap()方法常见的两个问题

lhc66666的博客 1758

lamda获取参数集合去空_Java lambda list转换map时,把多个参数拼接作为key操作

我就废话不多说了,大家还是直接看代码吧~Map partsMap = synList.stream().collect(Collectors.toMap(k ->k.getOe()+k.getOeId()+k.getPartGroupId()+k.getStdPartId()+k.getBrandCode(), part -> part));补充知识:Java8 Collectors....

weixin_39664585的博客 1012

Java Collectors.toMap 踩坑:重复 key 抛异常、null 值炸 NPE 与合并策略

是把列表转成 Map 的常用写法,但它藏着三个线上高频崩溃点:key 重复直接抛异常、value 为 null 抛 NPE、以及不小心丢了顺序。这几个坑本地小数据量根本测不出来,一到生产环境数据一杂就炸。这篇把它们讲透。

weixin_42662753的博客 252

Collectors.toMap踩坑指南:如何处理重复键与空指针问题?

本文深入解析Java中Collectors.toMap方法在处理集合转换时常见的重复键与空指针问题。通过实战案例,详细介绍了如何通过合并函数处理键冲突,以及通过过滤、提供默认值等策略预防NullPointerException,帮助开发者编写更健壮的代码。

docker8compose的博客 202

别再只会用Collectors.toMap了!Java Stream转Map的3个隐藏坑和5种替代方案

本文深入剖析了Java Stream转Map时`Collectors.toMap()`的三个常见陷阱:键冲突、空值异常和性能问题,并提供了五种替代方案,包括`groupingBy`、`collectingAndThen`、`toConcurrentMap`、自定义收集器和`partitioningBy`,帮助开发者根据不同场景选择最优解。

weixin_33733810的博客 317

Java8 steam.collect(Collectors.toMap())方法引发的NullPointerException 空指针异常

package com.example.demo; import java.util.Arrays; import java.util.List; import java.util.Map; import java.util.stream.Collectors; public class TestSteam { private static class Item { private String key; private String value;

牙刷冰冰的博客 2649

Collectors.toMap中的Java 8 NullPointerException

The Java 8 Collectors.toMap throws a NullPointerException if one of the values is 'null'. 如果值之一为“ n

CHCH998的博客 798

Collectors.toMap的value为空报NullPointerException

Collectors.toMap(),key可以为null,但 value不能为null, 否则抛空指针异常nullPointerException。

qq_41482600的博客 2056

把Java Stream用在生产环境后,我被资深架构师骂了整整半小时

本文我将完整复盘本次线上生产事故,深度拆解Java Stream在生产环境中的10大致命隐藏坑点,结合真实故障场景、错误代码、底层原理、压测数据、生产级最优解决方案,全文万字干货,彻底帮你规避Stream生产陷阱,让你告别“本地完美、线上崩库”的开发窘境。

小筱在线博客 279
上一篇: 使用freemarker、Itext进行Html转Pdf(解决中文问题&图片问题)
下一篇: 《高效能人士的七个习惯》阅读笔记
HY_Chan
博客等级 码龄10年 54粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值