MapUtil

HuTool包中的MapUtil

return ResponseEntity.ok(MapUtil.<String, Object>builder().put("code", exception.getCode()).put("msg", exception.getDefaultMessage()).build());

这是一段hutool工具包中的map构建,我感慨是不理解这样写的意义在哪里,直接构建HasnMap不是更快吗?

在这里使用MapUtil.builder()方式的意义在于代码的可读性、易用性和简洁性,尤其是在需要链式调用构建复杂的Map对象时。以下是几个使用MapUtil.builder()的原因:

  1. 代码简洁和可读性高
    • 使用MapUtil.builder()可以通过链式调用一步一步地向Map中添加键值对,代码显得简洁,不需要反复调用put()方法。
    • 与直接构建HashMap相比,链式调用方式减少了样板代码,让代码看起来更整洁,逻辑更清晰。
  2. 避免空值问题
    • MapUtil.builder()处理时可以有效避免手动构建Map时可能出现的空指针异常,因为它通常会在内部做一些空值检查。
  3. 线程安全性(如果有特殊需求时)
    • Hutool中的MapUtil提供了多种Map的实现,包括线程安全的ConcurrentHashMap等,因此MapUtil.builder()的实现可以根据需求灵活切换Map的类型,而不需要直接实例化特定的Map类。
  4. 代码灵活性
    • MapUtil.builder()的实现允许在Map构建的最后一步调用build(),这样你可以在链式调用的最后再生成Map对象,在代码组织上显得更有逻辑性。
  5. 便于扩展和维护
    • 如果将来Map的构建方式或类型发生变化,只需修改MapUtil内部逻辑,而无需修改各个使用Map构建的地方。

相比之下,直接构建HashMap虽然在性能上可能会稍微快一些(因为少了链式调用的开销),但在实际应用中差距不大,而MapUtil.builder()带来的代码组织和可读性提升可能会更值得追求。因此,MapUtil.builder()适合在需要构建小的、链式调用的Map场景中使用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/60502.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

STM32项目实战:基于STM32U5的火灾报警系统(LVGL),附项目教程/源码

《火灾报警系统_STM32U5》项目完整文档、项目源码&#xff0c;点击下方链接免费领取。 项目资料领取https://s.c1ns.cn/F5XyU STM32项目实战之“火灾报警系统”&#xff08;基于STM32U5&#xff09; 今天小编来分享一个《火灾报警系统》的项目案例&#xff0c;硬件平台是STM…

C++初阶 --- 类和对象(1)

类和对象&#xff08;1&#xff09; 一、类的相关内容1.访问限定符2.class关键字与struct关键字的区别3.类域 二、this指针三、成员函数存放在哪里&#xff1f;1. 函数的存放位置2. 练习题 一、类的相关内容 1.访问限定符 &#xff08;1&#xff09;C⼀种实现封装的⽅式&…

8. 基于 Redis 实现限流

在高并发的分布式系统中&#xff0c;限流是保证服务稳定性的重要手段之一。通过限流机制&#xff0c;可以控制系统处理请求的频率&#xff0c;避免因瞬时流量过大导致系统崩溃。Redis 是一种高效的缓存数据库&#xff0c;具备丰富的数据结构和原子操作&#xff0c;适合用来实现…

Ubuntu 22.04 安装配置opencv

​ OpenCV下载:https://opencv.org/releases/ ​编译与安装 安装cmake OpenCV需要使用cmake进行编译 sudo apt-get install cmake安装依赖 sudo apt-get install build-essential pkg-config libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev lib…

LeetCode 216-组合总数Ⅲ

题目链接&#xff1a;LeetCode216 欢迎留言交流&#xff0c;每天都会回消息。 class Solution {List<List<Integer>> rs new ArrayList<>();LinkedList<Integer> path new LinkedList<>();public List<List<Integer>> combinati…

Python 获取PDF的各种页面信息(页数、页面尺寸、旋转角度、页面方向等)

目录 安装所需库 Python获取PDF页数 Python获取PDF页面尺寸 Python获取PDF页面旋转角度 Python获取PDF页面方向 Python获取PDF页面标签 Python获取PDF页面边框信息 了解PDF页面信息对于有效处理、编辑和管理PDF文件至关重要。PDF文件通常包含多个页面&#xff0c;每个页…

Github配置ssh key原理及操作步骤

文章目录 配置SSH第一步&#xff1a;检查本地主机是否已经存在ssh key第二步&#xff1a;生成ssh key第三步&#xff1a;获取ssh key公钥内容第四步&#xff1a;Github账号上添加公钥第五步&#xff1a;验证是否设置成功验证原理 往github上push项目的时候&#xff0c;如果走ht…

爬虫学习8

Frida是一个动态代码插桩工具&#xff0c;允许开发者在运行时修改和调试应用程序 import ...&#xff1a;这行代码表示导入所需的模块或库&#xff0c;但具体的导入内容在图片中被省略了。 rdev frida.get_remote_device()&#xff1a;这行代码获取一个远程设备实例&#xff…

【动手学电机驱动】STM32-FOC(6)基于 IHM03 的无感方波控制

STM32-FOC&#xff08;1&#xff09;STM32 电机控制的软件开发环境 STM32-FOC&#xff08;2&#xff09;STM32 导入和创建项目 STM32-FOC&#xff08;3&#xff09;STM32 三路互补 PWM 输出 STM32-FOC&#xff08;4&#xff09;IHM03 电机控制套件介绍 STM32-FOC&#xff08;5&…

图像匹配验证码自动检测:基于YOLOv10和传统图像匹配算法

图像匹配验证码自动检测&#xff1a;基于YOLOv10和传统图像匹配算法 图像匹配验证码自动检测&#xff1a;基于YOLOv10和传统图像匹配算法 引言图像采集YOLOv10目标检测图像匹配1.计算两张图像的灰度直方图相似性2. RGB通道分离后的直方图相似度计算3. 感知哈希算法3. 均值哈希算…

POI word转pdf乱码问题处理

1.使用poi 转换word文档成pdf 导入依赖 <dependency><groupId>com.aspose</groupId><artifactId>words</artifactId><version>16.8.0</version></dependency>2.代码实现: SneakyThrowspublic void wordToPdf(String docPath,…

平替 Spring 正当时!Solon v3.0.3 发布

Solon 框架&#xff01; Java “新式”应用开发框架。开放原子开源基金会&#xff0c;孵化项目。从零开始构建&#xff08;非 java-ee 架构&#xff09;&#xff0c;有灵活的接口规范与开放生态。 追求&#xff1a; 更快、更小、更简单提倡&#xff1a; 克制、简洁、高效、开…

C03S03-Linux网络之DNS服务器

一、DNS 1. DNS概述 DNS&#xff08;域名系统、Domain Name System&#xff09;是将域名和IP地址相互映射的一个分布式数据库&#xff0c;方便用户访问互联网。IP地址是互联网上所有设备的唯一标识&#xff0c;设备之间的通信依赖于IP地址。DNS使得用户在访问网站时不需要记住…

华为云全球加速GA该在什么场景使用呢?

在全球化的商业环境中&#xff0c;企业面临着如何快速、稳定地扩展全球业务的挑战。华为云全球加速&#xff08;GA&#xff09;作为一款高效的全球网络加速服务&#xff0c;致力于帮助企业提升全球用户的访问体验&#xff0c;确保业务的稳定运行。九河云来和大家介绍一下什么是…

鸿蒙系统的发展及开发者机遇

鸿蒙系统&#xff08;HarmonyOS&#xff09;凭借其分布式架构和跨设备协同能力&#xff0c;展现出强大的发展潜力&#xff0c;在智能手机、智能穿戴、车载、家居等行业领域应用日益广泛&#xff0c;已逐渐形成与安卓、iOS 三足鼎立的市场格局。 开发者面临的挑战 1. 技术适应与…

WPF中Prism框架中 IContainerExtension 和 IRegionManager的作用

在Prism框架中&#xff0c;IContainerExtension和IRegionManager扮演着重要的角色&#xff0c;具体作用如下&#xff1a; IContainerExtension IContainerExtension接口是Prism 7中引入的&#xff0c;用于抽象依赖注入容器的操作。它实现了IContainerProvider和IContainerReg…

【C++】string(一)

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家了解C的string类&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 目录 1. 标准库中的string类1.1 string类(了解)1.2 string类的常用接口说明(A) string类对象的…

qt QSyntaxHighlighter详解

1、概述 QSyntaxHighlighter是Qt文本处理框架中的一个强大工具&#xff0c;它专门用于实现文本编辑器中的语法高亮功能。通过自定义高亮规则&#xff0c;QSyntaxHighlighter可以实现对代码编辑器、富文本编辑器中的关键字、注释等内容的高亮显示。这一功能对于提升代码的可读性…

第二天python笔记

Print(内容) Print(value,…,sep ,end\,n,fileNone) 字符串不管用几个单引号或双引号都能输出 sep是分隔符&#xff0c;逗号 默认显示空格分隔, 号可以连接前后’字符串’&#xff0c;不用写sep end是结束语 Chr()ascll值转字母文字 Ord()查找这个的ascll值 #单行注释,快…

方案丨车险保单OCR:3秒钟完成保单审核

在涉及车辆交易的各种情况下&#xff0c;记录和管理车险保单信息是一项必不可少的任务。然而&#xff0c;面对数量庞大的电子保单&#xff0c;传统的手工录入方式显得尤为低效——它不仅消耗大量时间&#xff0c;而且容易出现错误&#xff0c;这不仅影响了用户的满意度&#xf…