Collectors.toMap的对null友好实现
发表于|更新于
|浏览量:
令她反感的,远不是世界的丑陋,而是这个世界所戴的漂亮面具。——《不能承受的生命之轻》
我们在使用toMap时如果遇到null元素,经常会导致我们发生npe
很不方便
于是我给hutool提交了一个PR
完美解决了这个问题
使用方式:
升级到hutool-5.7.20
然后使用CollectorUtil
1 | Map<String, Integer> collect = Arrays.asList("ruben", "a chao", "vampire", "RUBEN", "VAMPIRE", null).stream().collect(CollectorUtil.toMap(Function.identity(), String::length, (l, r) -> l)); |
即可
相关推荐
2023-12-23
nacos坏了临时排除掉依赖
冬天动一动,少闹一场病;冬天懒一懒,多喝药一碗。——佚名 可以配置文件配置 123spring: autoconfigure: exclude: org.springframework.cloud.alibaba.nacos.* 也可以手动注解声明 12345678910NacosConfigAutoConfiguration: Nacos配置管理的自动配置。NacosDiscoveryAutoConfiguration: Nacos服务发现的自动配置。NacosServiceAutoConfiguration: Nacos服务相关的自动配置。NacosConfigEndpointAutoConfiguration: Nacos配置端点的自动配置。NacosDiscoveryEndpointAutoConfiguration: Nacos服务发现端点的自动配置。NacosServiceRegistryAutoConfiguration: Nacos服务注册的自动配置。NacosDiscoveryClientConfiguration: Nacos发现客户端的配置。N...
2024-09-02
Apache-ShenYu注册失败问题
金钱和时间是人生两种最沉重的负担,最不快乐的就是那些拥有这两种东西太多,多得不知怎样使用的人。——约翰逊 https://github.com/apache/shenyu/pull/5648 主要是当client id发生变化以后,再次启动ShenyuTestHttpApplication 会报错client id不匹配注册不上,这里调整了判断,如果token里不存在client id,就不进行校验 123456String clientIdFromToken = JwtUtils.getClientId(token);if (StringUtils.isNotEmpty(clientIdFromToken) && StringUtils.isNotEmpty(dashboardUserVO.getClientId()) && !StringUtils.equals(dashboardUserVO.getClientId(), clientIdFromToken)) { throw new Authe...
2024-04-28
安卓阴影实现
除了实践以外,没有别的办法可以识别错误。——狄德罗 首先网上找了一圈方案,要么是用UI切图的方式,要么是说用背景或者自带的阴影,这篇文章也说了 阴影组件化,解决安卓不统一问题 - 掘金 UI切图/制作点9图的方式: 这种方式应该是完美还原蓝湖设计图的方式,但不是从技术角度实现 下面还有几个 1. elevation(组件属性) 优点:绘制效率高,使用自带的api不用添加多余的drawable文件,并且支持 translationZ 动画方便实现点击的动画效果;不占位 缺点:低版本不显示,方向颜色不可控,自带的属性设置参数有限; 注意:View要带透明度,否则是没有效果; 2. CardView(组件自带) 优点:CardView是自带阴影的是Materail设计的组件,效率高;不占位 缺点:阴影方向颜色不可控; 注意:CardView模拟的光源在屏幕中心正上方阴影显示角度会有所差异; 3. Shape(作为背景绘制所以会占位,它的绘制原理是一层层的由深到浅的形状作为阴影) 优点:颜色方向可控制;占位 缺点:没有模糊效果阴影不自然有点生硬(较弱的阴影不太容易看出来)...
2023-07-18
forest自定Address
你若伤过一个人的心,给他一百样好处,也别以为自己不会吃亏。因为羽箭虽然已经从伤口拔出,疼痛依旧留在心上。——萨迪 咱们按照文档里配置: 🚚 请求地址 | Forest 然后使用 12345// 也是通过 @Address 注解来绑定动态地址来源// 每次调用该方法,都可能是不同的根地址@Post("/data")@Address(source = MyAddressSource.class)ForestRequest<String> sendData(); 非常的方便
2023-11-26
spring-state-machine监听器
在做艺术家之前,先要做一个人。——罗丹 分享一个spring-state-machine监听器的用法: 12345678910111213141516171819202122232425262728293031323334353637383940stateMachine.addStateListener(new StateMachineListenerAdapter<States, Events>() { @Override public void stateEntered(State<States, Events> state) { StateMachineMessage message = new StateMachineMessage(); message.setMessage("Enter state " + state.getId().toString()); simpMessagingTemplate.convertAndSend("/topic/sm.messag...
2023-03-19
关联更新封装(三)
太如意的生活便是平凡的生活,太容易获得的东西,便不是贵重的东西。——茅盾 今天是另外一种类型的关联更新封装 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768public static <T, K extends Comparable<? super K> & Serializable, S> BaseDbBO<S> saveSub(SubBO<T, K, S> bo) { val subIds = Steam.of(bo.getMainList()) .flat(data -> Steam.of(bo.getSubIdGetters()).map(f -> f.apply(data))) .nonNull().toList(); val su...

阿超
我的名字叫阿超 年龄25岁 家在北京市 职业是软件开发 每天最晚也会在八点前回家 不抽烟 酒浅尝辄止 晚上十二点上床 保证睡足八个小时 睡前写一篇博客 再做二十分钟俯卧撑暖身 然后再睡觉 基本能熟睡到天亮 像婴儿一样不留下任何疲劳和压力 就这样迎来第二天的早晨 健康检查结果也显示我很正常 我想说明我是一个不论何时都追求内心平稳的人 不拘泥于胜负 不纠结于烦恼 不树立使我夜不能寐的敌人 这就是我在这社会的生活态度
Follow Me公告
This is my Blog