Java中如何实现不可变Map详解
2021/7/22 22:10:22
本文主要是介绍Java中如何实现不可变Map详解,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
前言
有时最好不允许修改 java.util.Map
, 例如跨线程共享只读数据。为此,我们可以使用Unmodifiable Map或Immutable Map。
在这个快速教程中,我们将看到它们之间的区别。然后,我们将介绍可以创建不可变Map的各种方法。
下面话不多说了,来一起看看详细的介绍吧
不可修改与不可变
Unmodifiable Map其实是一个可以修改的map的包装器,不允许直接修改它。
1 2 3 4 5 6 |
|
但是包装器里面底层的可变Map仍然可以改变,修改也反映在不可修改的Map中:
1 2 3 4 5 |
|
另一方面,不可变Map包含其自己的私有数据,是不允许对其进行修改。因此,一旦创建了不可变Map的实例,数据就不会以任何方式改变。
Guava不变Map
Guava提供了每个java.util的不可变版本。使用 ImmutableMap 映射 。每当我们尝试修改它时,它都会抛出 UnsupportedOperationException。
由于它包含自己的私有数据,因此在更改原始地图时,此数据不会更改。
我们现在将讨论创建ImmutableMap实例的各种方法 。
1. 使用copyOf()方法:
首先,让我们使用ImmutableMap.copyOf()
方法,该方法返回原始Map中所有条目的副本:
1 2 |
|
它不能直接修改,但是可以改变其内部可变的Map:
1 2 3 4 5 6 7 8 |
|
2.使用builder()方法
我们还可以使用 ImmutableMap.builder()
方法创建原始Map中所有条目的副本。
此外,我们可以使用此方法添加原始Map中不存在的其他条目:
1 2 3 4 5 6 |
|
3. 使用of()
最后,我们可以使用ImmutableMap.of()
方法创建一个不可变的Map,其中包含动态提供的一组条目。它最多支持五个键/值对:
1 2 3 4 |
|
转自:https://www.jb51.net/article/152375.htm
这篇关于Java中如何实现不可变Map详解的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-07-02springboot项目无法注册到nacos-icode9专业技术文章分享
- 2024-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)