guava之ImmutableMap使用

为什么使用ImmutableMap?

  •  对不可靠的客户代码库来说,它使用安全,可以在未受信任的类库中安全的使用这些对象
  • 线程安全的:immutable对象在多线程下安全,没有竞态条件
  • 不需要支持可变性, 可以尽量节省空间和时间的开销. 所有的不可变集合实现都比可变集合更加有效的利用内存 (analysis)
  • 可以被使用为一个常量,并且期望在未来也是保持不变的,immutable对象可以很自然地用作常量,因为它们天生就是不可变的对于immutable对象的运用来说,它是一个很好的防御编程(defensive programming)的技术实践。

使用方法

初始化:

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

使用:

  • 使用 List.of 工厂方法创建 immutable list,list 中的元素是有序的,允许重复,但不允许为 null。
  • 使用 Set.of 工厂方法创建 immutable set,set 中的元素是无序的,且不重复,不允许为 null。
  • 使用 Map.of 和 Map.ofEntries 方法创建 immutable map,map 中的 key 不允许重复,key 与 value 都不能为 null。

拷贝集合:

  • JDK10 之后,可以使用 copyOf 方法来创建集合的拷贝。
  • 如果原 list 为 mutable,copyOf 方法会创建一个 immutable 集合,然后拷贝原 list 中的元素,之后,对原 list 的编辑和更新,不会影响 immutable list。如果原 list 为 immutable,copyOf 方法直接返回该 list 的引用。
发布了66 篇原创文章 · 获赞 230 · 访问量 18万+

猜你喜欢

转载自blog.csdn.net/lyztyycode/article/details/103702084