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)); |
即可
相关推荐
2021-04-26
花式Equals
人们很少做他们相信是对的事,他们做比较方便的事,然后后悔。——鲍勃.迪伦 相信大伙在开发中经常用equals去比较两个对象是否相等,这里分享一下一些别的写法 注意翻转equals:例如我们之前是这样写ruben.equals("ruben"),一定要改成"ruben".equals(ruben) 养成好习惯,利人利己 第一种写法,最常见的这种 12345String ruben = "ruben";String rabbit = "ruben";String achao = "achao";// 常用的Object.equalsSystem.out.println(ruben.equals(rabbit)); 第二种写法,避免空指针 12// 避免空指针的java.util.Objects.equalsSystem.out.println(Objects.equals(ruben, rabbit)); 比较数组的equals 123456// 比较数组的Objects.de...
2021-03-29
groupingBy
老老实实最能打动人心。——莎士比亚 你们可能知道Collectors.groupingBy是干嘛的了,没错分组 例如我们需要把用户根据age分组 1234SecureRandom random = new SecureRandom();List<User> users = random.ints(20,25).parallel().mapToObj(r -> User.builder().name(Faker.instance(Locale.CHINA).name().username()).age(r).build()).limit(20).collect(Collectors.toList());Map<Integer, List<User>> listMap = users.stream().collect(Collectors.groupingBy(User::getAge));listMap.forEach((k, v) -> System.out.println(k + ":" + v)); ...
2021-05-07
SHA1加密
谎言说得越来越真诚,最终连她自己也从中得到了安慰。——《百年孤独》 方式很简单,无需引入外部依赖 123456789101112131415161718192021222324import java.nio.charset.StandardCharsets;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;class Scratch { public static void main(String[] args) { System.out.println(getSha1("我的世界")); } public static String getSha1(String input) { MessageDigest mDigest = null; try { mDigest = MessageDigest.getInsta...
2024-07-11
Mybatis在Mapper上加注解关闭一级缓存
正如自然忌讳真空一样,人类是讨厌平等的。——《我是猫》 MyBatis的一级缓存是SqlSession级别的缓存,默认是开启的。如果你想在查询时禁用一级缓存,可以使用@Options注解并将flushCache属性设置为true: 123456789101112import org.apache.ibatis.annotations.Options;import org.apache.ibatis.annotations.Select;import org.apache.ibatis.annotations.Mapper;@Mapperpublic interface MyMapper { @Select("SELECT * FROM my_table WHERE id = #{id}") @Options(flushCache = Options.FlushCachePolicy.TRUE) MyEntity selectById(int id);} 这样每次执行查询时,都会刷新缓存。
2020-08-01
jenkins构建触发器
访问接口形式触发首先看第一种,访问接口形式触发 先到我们的项目设置,选择构建触发器 选择触发远程构建 设置token 然后保存,访问输入框下面的URL 1http://121.89.163.191:8090/job/web_demo_pipeline/build?token=rubenweicowbeer 然后发现我们的项目已经开始构建了 在其他项目构建后触发第二种是在其他项目构建后触发 我们先创建一个前置工程 这个工程很简单,就输入一句话 然后回到之前项目,选择Build after other projects are built 输入前置工程后保存,构建前置工程 我们发现我们的前置工程构建后web_demo_pipeline工程也跟着构建了 定时构建第三种是定时构建 首先是语法 1234567* * * * *分 时 天 月 周第一个*表示分钟,取值0~59第二个*表示小时,取值0~23第三个*表示一个月的第几天,取值1~31第四个*表示第几月,取值1~12第五个*表示一周中的第几天,取值0~7,其中0和7代表的都是周日 一些常用的表达式 12345678...
2024-07-06
在嵌入式tomcat运行如何添加spring配置配置参数
placehloder 我们知道,在springboot用jar运行时,可以通过指定参数来进行配置 1java -jar myapp.jar --server.port=8081 --spring.datasource.url=jdbc:mysql://localhost:3306/mydb 如果是tomcat运行,则有下列几种方式 在 CATALINA_OPTS 环境变量中设置参数: 你可以在 Tomcat 的环境变量 CATALINA_OPTS 中添加 Spring 配置参数。例如,编辑 setenv.sh(Linux)或 setenv.bat(Windows)文件,添加以下内容: 12# setenv.sh (Linux)export CATALINA_OPTS="$CATALINA_OPTS -Dserver.port=8081 -Dspring.datasource.url=jdbc:mysql://localhost:3306/mydb" 12rem setenv.bat (Windows)set CATALINA_OPTS=%CATAL...

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