返回顶部
首页 > 资讯 > 精选 >java中ImmutableMap怎么用
  • 367
分享到

java中ImmutableMap怎么用

2023-06-15 11:06:30 367人浏览 泡泡鱼
摘要

这篇文章主要为大家展示了“java中ImmutableMap怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“java中ImmutableMap怎么用”这篇文章吧。ImmutableMap:一

这篇文章主要为大家展示了“java中ImmutableMap怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“java中ImmutableMap怎么用”这篇文章吧。

ImmutableMap:一个不可变集合

java中的Immutable对象:

简单地说,如果一个对象实例不能被更改就是一个Immutable的对象,Java SDK提供的大量值对象,比如String等都是Immutable的对象。

创建ImmutableMap:

Map<String,Object> immutableMap = new ImmutableMap.Builder<String,Object>().build();

在创建时放值:

Map<String,Object> immutableMap = new ImmutableMap.Builder<String,Object>()    .put("k1","v1")    .put("k2","v2")    .build();

创建后不可变:

immutableMap.put("k1","v3");//会抛出java.lang.UnsupportedOperationException

ImmutableMap中key和value均不能为null,放入null值会抛出NPE

ImmutableMap的使用场景:

适合

确定性的配置, 比如根据不同的key值得到不同的请求url

写单元测试

不适合

key, value为未知参数, 可能有null产生的情况

guava中ImmutableMap使用示例及好处

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");

以上是“java中ImmutableMap怎么用”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网精选频道!

--结束END--

本文标题: java中ImmutableMap怎么用

本文链接: https://lsjlt.com/news/279970.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • java中ImmutableMap怎么用
    这篇文章主要为大家展示了“java中ImmutableMap怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“java中ImmutableMap怎么用”这篇文章吧。ImmutableMap:一...
    99+
    2023-06-15
  • java ImmutableMap的使用说明
    ImmutableMap:一个不可变集合 java中的Immutable对象: 简单地说,如果一个对象实例不能被更改就是一个Immutable的对象,Java SDK提供的大量值对象...
    99+
    2024-04-02
  • java中==怎么使用
    java中==怎么使用java中==常用于if语句或三目运算符,比如:if (1 == 2) { } 1 == 2 "true" : "false";在Java中,如果是基本数据类型,则 == 比较的是值;如果是对象类型,则 == 比较...
    99+
    2020-10-17
    java基础 java == 用法
  • java中lock怎么用
    小编给大家分享一下java中lock怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Java的特点有哪些Java的特点有哪些1.Java语言作为静态面向对象编...
    99+
    2023-06-14
  • Java中HashSet怎么用
    这篇文章将为大家详细讲解有关Java中HashSet怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Java HashSetHashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合...
    99+
    2023-06-20
  • Java中classpath怎么用
    这篇文章给大家分享的是有关Java中classpath怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。概要classpath是Java运行时环境搜索类和其他资源文件(比如jar\zip等资源)的路径。可以通过...
    99+
    2023-06-22
  • java中BigDecimal怎么用
    这篇文章主要为大家展示了“java中BigDecimal怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“java中BigDecimal怎么用”这篇文章吧。【为什么要用BigDecimal?】...
    99+
    2023-06-25
  • Java中keytool怎么用
    小编给大家分享一下Java中keytool怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Keytool简单介绍keytool 是个密钥和证书管理工具。它使用...
    99+
    2023-06-29
  • Java中Unsafe怎么用
    这篇文章将为大家详细讲解有关Java中Unsafe怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Unsafe是什么首先我们说Unsafe类位于rt.jar里面sun.misc包下面,Unsafe翻译...
    99+
    2023-06-25
  • Java中Feign怎么用
    这篇文章给大家分享的是有关Java中Feign怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一,简介Feign使得 Java HTTP 客户端编写更方便。Feign 灵感来源于Retrofit、JAXRS-...
    99+
    2023-05-30
    java feign
  • Java中FastJson怎么用
    这篇文章给大家分享的是有关Java中FastJson怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。FastJSON是一个Java语言编写的高性能,功能完善,完全支持http://json.org的标准的JS...
    99+
    2023-05-30
    java fastjson
  • java中indexof()怎么用
    这篇文章主要介绍java中indexof()怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!IndexOf 方法返回 String 对象内第一次出现子字符串的字符位置。strObj.indexOf(subStri...
    99+
    2023-06-03
  • java中ThreadLocal怎么用
    这篇文章将为大家详细讲解有关java中ThreadLocal怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。package test;public class Threa...
    99+
    2023-06-02
  • Java中Static怎么用
    这篇文章给大家分享的是有关Java中Static怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。static的字面意思: 静态的static在程序中的意思,静态的,不需要实例化的static 是一个形容词,意...
    99+
    2023-06-02
  • java中response.addheader怎么用
    在Java中,使用response.addHeader()方法可以向HTTP响应中添加头信息。该方法接收两个参数,第一个参数是头名称...
    99+
    2024-02-29
    java
  • java中encodeuricomponent怎么用
    在Java中使用URLEncoder.encode()方法来进行URL编码,该方法可以将字符串中的特殊字符转换为URL编码格式。示例...
    99+
    2024-03-07
    java
  • java中的t怎么用
    T表示返回值是一个泛型,传递啥,就返回啥类型的数据,而单独的T就是表示限制你传递的参数类型,这个案例中,通过一个泛型的返回方式,获取每一个集合中的第一个数据, 通过返回值 T 和T的两种方法实现。T 用法返回值,直接写T表示限制参数的类型...
    99+
    2019-02-09
    java基础 java
  • Java中怎么使用volatile
    这篇文章主要介绍了Java中怎么使用volatile的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Java中怎么使用volatile文章都会有所收获,下面我们一起来看看吧。 ...
    99+
    2024-04-02
  • java中@Target怎么使用
    这期内容当中小编将会给大家带来有关java中@Target怎么使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发;3. ...
    99+
    2023-06-14
  • Java中的ThreadLocal怎么用
    这篇文章给大家分享的是有关Java中的ThreadLocal怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。引言ThreadLocal的官方API解释为:“该类提供了线程局部 (thread-local) &...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作