来自google guava的一个工具类,如果需要使用这个类,需要先引入maven依赖
<!-- https://mvnrepository.com/artifact/com.google.guava/guava -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>30.1.1-jre</version>
</dependency>
Guava提供的ImmutableMap是一个支持多线程环境下面的安全的Map,同时效率也是很高的Key-Value集合,为什么他就是安全的呢。
如果一个对象实例不能被更改就是一个Immutable的对象,immutable Objects就是那些一旦被创建,他们的状态就不能被改变的Objects没每次对他们的改变都是产生了新的Immutable的对象,而mutable Object就是那些创建后,状态可以被改变的Objects。
immutable objects比传统的mutable对象在多线程应用中更具有优势,它不仅能够保证对象的状态不被改变而且还可以不适用锁机制就能被其他线程共享。
如何创建:
ImmutableMap.Builder<String, Object> request = ImmutableMap.builder();
request.put("one","1");
request.put("two","2");
request.put("three","3");
Map<String, Object> map = request.build();
这个实例创建的时候,只是创建了一个空的对象。
那么实际效用的是build()
key值和value值均不能赋值为null,放入null值会抛出NullPointerException
个人感觉更适合永久性不会更改的配置。