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)); |
即可
相关推荐
2024-02-29
satoken+webflux获取header以及body
你若要喜爱自己的价值,你就得给世界创造价值。——歌德 代码如下: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980import cn.dev33.satoken.context.SaHolder;import cn.dev33.satoken.context.SaTokenContextForThreadLocalStorage;import cn.dev33.satoken.reactor.context.SaReactorSyncHolder;import cn.dev33.satoken.reactor.filter.SaReactorFilter;import cn.dev33.satoken.router.SaRouter;import jakarta.annotation.Resource;import org.j...
2021-12-26
mybatis-plus允许自定义handlerType的set
与有肝胆人共事,从无字句处读书。——周恩来 今天看mybatis-plus源码发现了UpdateWrapper中的set竟然有一两个重载没有在官方文档写到: 一看官方示例,发现它可以临时自定义typeHandler,也就是类型处理器,以及属性所在的java类型和数据库中字段的数据类型(jdbcType) 例如官方示例传入的: 我们也可以像方法注释那样传入javaType和jdbcType 12345// wrapper typeHandler 测试 LambdaUpdateWrapper<User> wrapper = Wrappers.<User>lambdaUpdate().set(User::getWallets, Arrays.asList(new Wallet("Tom", Arrays.asList(new Currency("RMB", 1000d)))), "javaType=java.util.List,jdbcType=VARCHAR,type...
2023-05-03
为shenyu的PortUtils.findPort添加单元测试
爱好自由是人的天性,但往往过度而陷于放纵。斯宾诺莎 今天为shenyu的shenyu-client-core模块下添加了PortUtils.findPort的test case: https://github.com/apache/shenyu/pull/4604 对应的代码如下: 123456789101112131415161718192021222324252627282930313233343536373839404142/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Ve...
2020-08-29
第三方登录
大家经常被注册登录繁琐的步骤击退,经常进几个不同的网站要输入几次用户密码,特别繁琐 所以社交账号登录出现了,也就是说用QQ微信微博等社交账号就可以登录其他网站 OAuth 2.0是用于授权的行业标准协议。OAuth 2.0致力于简化客户端开发人员,同时为Web应用程序,桌面应用程序,移动电话和客厅设备提供特定的授权流程。该规范及其扩展正在IETF OAuth工作组内开发。 Oauth 2.0文档 流程图如下: 1234567891011121314151617+--------+ +---------------+| |--(A)- Authorization Request ->| Resource || | | Owner || |<-(B)-- Authorization Grant ---| || | ...
2022-02-17
启动时获取端口号
人类文化的悲哀,是流俗的易传、高雅的失传。——木心 我们可以如下写法在boot项目启动时获取端口号 12345678910111213141516171819202122232425package com.ruben.simplescaffold;import lombok.extern.slf4j.Slf4j;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.context.ConfigurableApplicationContext;import org.springframework.core.env.Environment;/** * 主启动类 * * @author <achao1441470436@gmail.com> * @since 2021/5/18 0018 14:52 */@Slf4j@SpringBoot...
2022-12-09
Comparable泛型踩坑
善疑人者,人亦疑之;善防人者,人亦防之。——刘基 之前写的Comparable解决泛型限定问题 遇到了这种情况: 这是因为LocalDate没有实现Comparable<LocalDate> 而是由其实现的接口ChronoLocalDate去继承的Comparable<ChronoLocalDate> 并且LocalDate去实现的Serializable,而不是ChronoLocalDate 我们这里直接用的T extends Comparable<T>,此处传了LocalDate就是extends Comparable<LocalDate> 和实现Serializable的不是同一层级,所以我们需要指定为Comparable<? super T>,这个意思就是说允许Comparable里的类型是它的父类或者接口,具体super和extends区别可以看泛型的super和extends 改成Comparable<? super T>后,编译通过

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