本文主要是介绍Guava ImmutableMap,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、不可变集合
如果一个对象实例不能被更改就是一个Immutable的对象。
Java SDK提供的大量值对象,比如String等都是Immutable的对象。
1、为什么使用它呢?
- 线程安全
- 更有效的利用内存
- 可作为常量
2、使用场景
适合
- 确定性的配置, 比如根据不同的key值得到不同的请求url
- 写单元测试
不适合
- key, value为未知参数, 可能有null产生的情况
3、Guava集合和不可变对应关系
二、使用
ImmutableMap中key和value均不能为null,放入null值会抛出NPE
1、引入依赖
<dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>26.0-jre</version>
</dependency>
2、实例1 —— 单个
//创建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
3、实例2 —— 批量
import com.google.common.collect.ImmutableMap;private static List<Map<String, String>> books = Arrays.asList(ImmutableMap.of("id", "book-1","name", "Harry Potter and the Philosopher's Stone","pageCount", "223","authorId", "author-1"),ImmutableMap.of("id", "book-2","name", "Moby Dick","pageCount", "635","authorId", "author-2"),ImmutableMap.of("id", "book-3","name", "Interview with the vampire","pageCount", "371","authorId", "author-3"));
这篇关于Guava ImmutableMap的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!