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