开发利器Hutool之MapBuilder的使用

简介: 开发利器Hutool之MapBuilder的使用

概述


Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。

目前公司项目中主要采用Hutool作为项目的工具包,相对于google的guava, hutool的工具类采用中文注释,更加符合国人使用。所谓知己知彼,我们需要了解Hutool都具有什么样的功能,才能够最大化发挥它的价值。

本文主要就hutool 5.8.8版本中MapBuilder的使用,一个快速创建并且初始化Map的工具。


场景引入


在创建Map对象并且初始化的时候,通常使用下面这样的代码,下面创建Map的静态常量:

private static final Map<String, String> STATUS_MAP = new HashMap<>();
static {
    STATUS_MAP.put("1", "启用");
    STATUS_MAP.put("2", "禁用");
}

或者下面的代码,也很冗余:

@Test
public void testMap() {
    Map<String, String> map = new HashMap<>();
    map.put("a", "1");
    map.put("b", "2");
    map.put("c", "3");
    map.put("d", getValue(4));
}

那么MapBuilder类就可以很好的解决这样丑陋的代码。


MapBuilder使用


依赖引入

<dependency>
  <groupId>cn.hutool</groupId>
  <artifactId>hutool-all</artifactId>
  <version>5.8.8</version>
</dependency>

演示

@Test
public void conditionPutTest() 
  // 初始化map
    Map<String, String> map = MapBuilder.<String, String>create()
            .put("a", "1")
            .put(false, "b", "2")
            .put(true, "c", () -> getValue(3))
            .put(false, "d", () -> getValue(4))
            .build();
    Assert.assertEquals(map.get("a"), "1");
    Assert.assertFalse(map.containsKey("b"));
    Assert.assertEquals(map.get("c"), "3");
    Assert.assertFalse(map.containsKey("d"));
}

或者如下:

private static final Map<String, String> STATUS_MAP_NEW = MapUtil.unmodifiable(MapBuilder.<String, String>create().put("1", "启用").put("2", "禁用").build());


源码解析


下面是MapBuilder类的结构图:

1671192487013.jpg

实现了Builder接口,构建出map实例。其实这是一个很典型的建造者模式,可以创建出map对象。

  • 通过构造方法或者create方法创建一个MapBuilder对象
/**
   * 链式Map创建类
   * 
   * @param map 要使用的Map实现类
   */
  public MapBuilder(Map<K, V> map) {
    this.map = map;
  }
     /**
   * 创建Builder
   * 
   * @param <K> Key类型
   * @param <V> Value类型
   * @param map Map实体类
   * @return MapBuilder
   * @since 3.2.3
   */
  public static <K, V> MapBuilder<K, V> create(Map<K, V> map) {
    return new MapBuilder<>(map);
  }
  1. 调用MapBuilder的put方法,向map中put方法,最终返回的是MapBuilder本身,这样的话可以进行链式调用。
/**
   * 链式Map创建
   * 
   * @param k Key类型
   * @param v Value类型
   * @return 当前类
   */
  public MapBuilder<K, V> put(K k, V v) {
    map.put(k, v);
    return this;
  }
  1. 最后调用build方法,返回map本身。
/**
   * 创建后的map
   * 
   * @return 创建后的map
   * @since 3.3.0
   */
  public Map<K, V> build() {
    return map();
  }


总结


本文主要讲解了Hutool中的MapBuilder类的使用,主要用来创建Map对象,非常精简、方便,希望对大家有帮助。

目录
相关文章
|
11月前
|
Java 程序员 测试技术
Java程序员必备工具大全,助力开发效率提升!
Java程序员必备工具大全,助力开发效率提升!
236 0
|
缓存 算法 Java
【开发利器Hutool】推荐一个超好用的本地缓存
【开发利器Hutool】推荐一个超好用的本地缓存
1911 0
【开发利器Hutool】推荐一个超好用的本地缓存
|
1月前
|
IDE Java 开发工具
Java 开发神器 Lombok:告别冗余,拥抱优雅!
Java 开发神器 Lombok:告别冗余,拥抱优雅!
32 0
|
3月前
|
关系型数据库 C# 数据库
技术笔记:MSCL超级工具类(C#),开发人员必备,开发利器
技术笔记:MSCL超级工具类(C#),开发人员必备,开发利器
39 3
|
3月前
|
Java 开发者 Spring
Spring 框架:Java 企业应用开发的“瑞士军刀”,一网打尽所有需求!
【6月更文挑战第25天】Spring框架是Java开发的“瑞士军刀”,以其DI(依赖注入)减少手动管理,提高效率。AOP(面向切面编程)实现非侵入式关注点分离,如日志和事务管理。@Transactional注解简化事务处理,Web支持使Web应用开发更便捷。通过这些工具,Spring解决了复杂需求,增强了代码的可维护性和性能。
19 0
|
4月前
|
安全 前端开发 Java
Java Spring框架实战:构建企业级应用的新利器
【4月更文挑战第2天】Spring框架简化企业级应用开发,核心特性和模块包括依赖注入(DI)和面向切面编程(AOP),提供Web(Spring MVC)、数据访问和安全(Spring Data、Spring Security)支持。Spring Boot加速配置与部署,适合微服务。通过DI和AOP实现松耦合,模块化关注点,助力构建高效、可维护的应用。
77 0
|
4月前
|
存储 缓存 安全
Guava:Java开发者的全方位工具库
Guava:Java开发者的全方位工具库
180 0
|
Kubernetes Java 微服务
2023年全新java架构技术框架Quarkus实战神仙文档
Quarkus是一款有别于传统Java架构的新技术框架。它建立在我们熟知的技术栈上,使用了诸多成熟的技术,如JPA、JAX-RS、EclipseVert.x、Eclipse MicroProfile和CDI等,并将这些技术与Kubernetes紧密融合在一起。用户可以借助Kubernetes高效的调度运维能力,最大限度地节约资源。
|
JSON Java fastjson
JMH - Java 代码性能测试的终极利器、必须掌握
JMH - Java 代码性能测试的终极利器、必须掌握
2526 1
|
存储 Kubernetes Java
2022年全新java架构技术框架Quarkus实战神仙文档
Quarkus是一款有别于传统Java架构的新技术框架。它建立在我们熟知的技术栈上,使用了诸多成熟的技术,如JPA、JAX-RS、EclipseVert.x、Eclipse MicroProfile和CDI等,并将这些技术与Kubernetes紧密融合在一起。用户可以借助Kubernetes高效的调度运维能力,最大限度地节约资源。