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)); |
即可
相关推荐
2020-11-01
java8的stream流(二)
字典里最重要的三个词,就是意志、工作、等待。我将要在这三块基石上建立我成功的金字塔——(法)巴斯德 之前写过一个关于stream流的博客,这次再做个补充吧 1234567891011121314// 取出第一条,没取到则为0Integer first = someNumber.stream().findFirst().orElse(0);// 随机取一个,没取到则为0Integer any = someNumber.stream().findAny().orElse(0);// 直接取和,没取到则为0Integer sum = someNumber.stream().reduce(Integer::sum).orElse(0);// 不包含20为trueboolean noneMatch = someNumber.stream().noneMatch(data -> data == 20);// 全部大于0为trueboolean allMatch = someNumber.stream().allMatch(data -> data > 0);// 任何等...
2024-03-08
mybatis-plus-ext
教育不是注满一桶水,而是点燃一把火。 ——叶芝 分享一个最近加入dromara的orm mybatis-plus-ext: mybatis-plus框架的拓展包,在框架原有基础上做了进一步的轻度封装,增强内容:免手写Mapper、多数据源自动建表、数据自动填充、自动关联查询、冗余数据自动更新、动态查询条件等。 文档: Mybatis-Plus-Ext教程 · 语雀 mybatis-plus框架的拓展包,在框架原有基础上做了进一步的轻度封装,增强内容:免手写Mapper、多数据源自动建表、数据自动填充、自动关联查询、冗余数据自动更新、动态查询条件等。 尽管MybatisPlus (后文简称MP)相比较Mybatis丝滑了很多,但是,日常使用中,是否偶尔仍会怀念JPA(Hibernate)的那种纵享丝滑的感受,更好的一心投入业务开发中,如果你也是如此,那么恭喜你发现了MybatisPlusExt(后文简称MPE)。 MPE对MP做了进一步的拓展封装,即保留MP原功能,又添加更多有用便捷的功能。同样坚持与MP对Mybatis的原则,只做增强不做改变,所以...
2025-04-17
Fabric
如果不忘记许多,人生无法再继续。——巴尔扎克 我的世界 Fabric 模组开发入门指南Fabric 是 Minecraft 的一个轻量级模组加载器和 API,它为开发者提供了一个灵活的开发环境,同时对游戏性能的影响较小。在这篇博客中,我们将介绍 Fabric 的基本概念、如何搭建开发环境,以及创建一个简单的自定义模组。 什么是 Fabric?Fabric 是一个专为 Minecraft 设计的模组加载器,与 Forge 相比,它更加轻量、快速,并且支持快速的更新和版本迭代。对于想要为 Minecraft 添加自定义功能的玩家和开发者,Fabric 是一个非常不错的选择。 Fabric 的特点包括: 轻量化:对游戏性能的影响较小。 快速更新:通常会在 Minecraft 的新版本发布后迅速支持。 模块化 API:开发者可以选择性地加载所需的功能模块。 强大的社区支持:拥有丰富的文档与教程。 开发环境搭建在开始开发之前,你需要先搭建一个基础的开发环境。以下是搭建 Fabric 开发环境的步骤: 1. 安装必要的软件 Java 开发工具包(JDK):推荐使用 JDK 17。...
2020-12-10
Calendar的获取date中年月日时分秒
仿佛前世的密约,注定我们要在今生抵掌,然后一起创世,或者再次站成一排,慷慨赴死。——野夫 转载,原文 123456789Date startTime = new Date();Calendar c = Calendar.getInstance();c.setTime(startTime);int year = c.get(java.util.Calendar.YEAR);int month = c.get(java.util.Calendar.MONTH) + 1;//获取月份(因为在格里高利历和罗马儒略历一年中第一个月为JANUARY,它为0,最后一个月取决于一年中的月份数,所以这个值初始为0,所以需要加1)int day = c.get(java.util.Calendar.DATE);//获取日int hour = c.get(Calendar.HOUR_OF_DAY);//小时(calendar.HOUR 12小时制,calendar.HOUR_OF_DAY 24小时)int minute = c.get(java.util.Calendar.MINUTE);//分i...
2021-07-10
mybatis-plus防止全表更新与删除
宁要好梨一个,不要烂梨一筐。积极肯干和忠心耿耿的人即使只有两三个,也比十个朝气沉沉的人强。——列宁 我们可以如下配置 12345678910111213@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(DbType.MYSQL); // 阻止全表更新与删除 BlockAttackInnerInterceptor blockAttackInnerInterceptor = new BlockAttackInnerInterceptor(); // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false paginatio...
2023-05-31
hutool-http配置默认实现
谨慎有时伸展太远了,以致堵塞了前进的道路。——佚名 在hutool中默认是通过spi扫描获取默认实现客户端 如果我们需要手动指定,只需要配置 1Singleton.put(ClientEngine.class.getName(), new JdkClientEngine()); 即可

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