ImmutableMap是不可变的,线程安全的;它可以创建一些常量的映射键值对;他提供了很多的组合键值对的方法,源码中使用了一个静态内部类来组装构建ImmutableMap,静态内部类作为外部类的辅助构建ImmutableMap,内部使用final声明了一个ArrayList变量。

  public static class Builder<K, V>{final ArrayList<Map.Entry<K, V>> entries = Lists.newArrayList();public Builder() {}public Builder<K, V> put(K key, V value){this.entries.add(ImmutableMap.entryOf(key, value));return this;}public Builder<K, V> put(Map.Entry<? extends K, ? extends V> entry){K key = entry.getKey();V value = entry.getValue();if ((entry instanceof ImmutableEntry)) {Preconditions.checkNotNull(key);Preconditions.checkNotNull(value);Map.Entry<K, V> immutableEntry = entry;this.entries.add(immutableEntry);}else{this.entries.add(ImmutableMap.entryOf(key, value));}return this;}public Builder<K, V> putAll(Map<? extends K, ? extends V> map){this.entries.ensureCapacity(this.entries.size() + map.size());for (Map.Entry<? extends K, ? extends V> entry : map.entrySet()) {put(entry.getKey(), entry.getValue());}return this;}public ImmutableMap<K, V> build(){return fromEntryList(this.entries);}private static <K, V> ImmutableMap<K, V> fromEntryList(List<Map.Entry<K, V>> entries){int size = entries.size();switch (size) {case 0: return ImmutableMap.of();case 1: return new SingletonImmutableBiMap((Map.Entry)Iterables.getOnlyElement(entries));}Map.Entry<?, ?>[] entryArray = (Map.Entry[])entries.toArray(new Map.Entry[entries.size()]);return new RegularImmutableMap(entryArray);}}

之前我们判断取值结果可以使用if else形式:

        int a = 1;if(a == 1) {System.out.println(a);} else {System.out.println(a);}

或者使用switch方式:

        int a = 1;switch (a) {case 1:System.out.println(a);break;case 2:System.out.println(a);default:System.out.println(a);break;}

现在可以使用ImmutableMap集合来组装键值对,这样的组合方式既简单又省去了大量多余的代码:

        ImmutableMap<String, Object> map = ImmutableMap .<String, Object>builder().put("1", "1").put("2", "2").put("3", "3").build();ImmutableMap<String, String> map1 = ImmutableMap .<String, String>of("1", "2");

guava中ImmutableMap使用示例及好处相关推荐

  1. guava 之 ImmutableMap 使用实例及好处

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. ImmutableMap 的作用就是:可以让java代码也能够创建一个对象常量映射,来保存一些常量映 ...

  2. 简单分析Guava中RateLimiter中的令牌桶算法的实现

    为什么80%的码农都做不了架构师?>>>    令牌桶算法是网络流量整形(Traffic Shaping)和速率限制(Rate Limiting)中最常使用的一种算法.典型情况下,令 ...

  3. 简易理解设计模式之:责任链模式——OA中请假流程示例

    介绍: 责任链模式属于行为型设计模式.它的定义为:使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,只到有对象处理它为止. 类图: ...

  4. java令牌桶_简单分析Guava中RateLimiter中的令牌桶算法的实现

    令牌桶算法是网络流量整形(Traffic Shaping)和速率限制(Rate Limiting)中最常使用的一种算法.典型情况下,令牌桶算法用来控制发送到网络上的数据的数目,并允许突发数据的发送. ...

  5. 使用angular的好处_在项目中使用Angular的最大好处

    使用angular的好处 by Irina Sidorenko 伊琳娜·西多连科(Irina Sidorenko) 在项目中使用Angular的最大好处 (The top benefits of us ...

  6. python中typing.NamedTuple示例

    python中typing.NamedTuple示例 from typing import * # 导入依赖项 class Friend(NamedTuple): """ ...

  7. python把坐标写入文本_Python实现将数据写入netCDF4中的方法示例

    本文实例讲述了Python实现将数据写入netCDF4中的方法.分享给大家供大家参考,具体如下: nc文件为处理气象数据文件.用户可以去https://www.lfd.uci.edu/~gohlke/ ...

  8. Guava之FluentIterable使用示例

    FluentIterable 是guava集合类中常用的一个类,主要用于过滤.转换集合中的数据:FluentIterable是一个抽象类,实现了Iterable接口,大多数方法都返回FluentIte ...

  9. SQL Server:日志备份和差异备份还原中的常见问题示例

    日志备份和差异备份还原中的常见问题示例 代码  1 --创建测试  2 CREATE DATABASE db  3 GO  4   5 --正常备份  6 BACKUP DATABASE db TO  ...

最新文章

  1. 【FFmpeg】ffmpeg工具源码分析(二):转码核心函数 transcode
  2. try catch语句 java_深入剖析java的try…catch…finally语句
  3. 内网渗透测试:内网信息收集与上传下载
  4. 【Flask】数据的CRUD之增加和查询操作
  5. 判断listview是上滑还是下滑的方法
  6. 你需要administrators提供的权限才能删除_终于解决了:你需要来自XXX的权限才能对此文件进行更改
  7. NodeBlog v0.1.0发布
  8. oracle中常用的连接,Oracle 数据库中表的常用连接方式
  9. Json解析工具Jackson(使用注解)
  10. 帮你躲坑:pip install tensorflow 报错怎么办,import tensorflow 报错怎么办?
  11. Mac废纸篓无法清空怎么办?
  12. nifi服务器间拷贝文件,NIFI Kerberos 认证
  13. 计算机冗余,计算机中的冗余是什么意思
  14. [Windows]笔记本触摸板手势突然不起作用的解决办法
  15. 解决win10桌面管理器内存泄漏问题
  16. Java核心(集合类1-概述、Collection 接口 、List 集合)
  17. 人工智能点点通-AI开发工具介绍-钱兴会-专题视频课程
  18. 用JAVA编写MD5大写32位加密
  19. python将中文数字转化成阿拉伯数字
  20. HC595驱动数码管

热门文章

  1. 苹果升级后怎么恢复以前的版本_iPhone升级iOS14,卡在更新进程无法启动怎么办?...
  2. 【计算机非全日制】就业如何?可以去哪些企业?
  3. OA系统通知管理设计
  4. Dream Aquarium 1.240 汉化增强版
  5. hive笔记(五):查询、排序-join语句/连接/分区/sort by/distribute by/cluster by
  6. 用PS调出古装人像复古感色调
  7. 优化OEA中的聚合SQL
  8. train_test_split()函数
  9. KillCopy、TeraCopy、FastCopy
  10. IDEA实现同一个启动类利用不同端口启动多服务