如何在 Java 9 中创建不可修改的 Map?\
javaobject oriented programmingprogramming更新于 2025/7/13 6:04:17
不可修改的 Map 是指一旦创建了不可修改的 Map 实例,其键和值就无法添加、删除或更新。静态工厂方法:Map 中的 Map.of() 和 Map.ofEntries() 提供了一种在 Java 9 中创建不可修改映射的便捷方法。
使用 Map.of() 和 Map.ofEntries() 方法创建的映射实例具有以下特征。
- 工厂方法返回的映射通常是 不可变的。这意味着 键和 值不能添加、删除或更新。调用映射上的任何变量方法都会导致 UnsupportedOperationException。
- 如果映射所包含的 键/值 本身是 可变的,则可能会导致 Map 表现不一致y或其内容似乎发生了变化。
- 不可变映射不允许 null 键和 值。如果尝试使用空键或值进行创建,则会抛出 NullPointerException。
- 在创建时会拒绝重复的键。将重复的键传递给静态工厂方法会导致 IllegalArgumentException。
- 如果所有键和值都是可序列化的,则不可变映射是可序列化的。
- 映射的迭代顺序未指定,并且可能会发生变化。
语法
Map.of(k1, v1, k2, v2) Map.ofEntries(entry(k1, v1), entry(k2, v2),...)
Map.of() 示例
import java.util.Map;
public class UnmodifiableMapTest {
public static void main(String[] args) {
Map<String, String> empMap = Map.of("101", "Raja", "102", "Adithya", "103", "Jai", "104", "Chaitanya");
System.out.println("empMap - " + empMap);
empMap.put("105", "Vamsi"); // throws UnsupportedOperationException
}
}
输出
empMap - {104=Chaitanya, 103=Jai, 102=Adithya, 101=Raja}
Exception in thread "main" java.lang.UnsupportedOperationException
at java.base/java.util.ImmutableCollections.uoe(Unknown Source)
at java.base/java.util.ImmutableCollections$AbstractImmutableMap.put(Unknown Source)
at UnmodifiableMapTest.main(UnmodifiableMapTest.java:7)
Map.ofEntries() 的示例
import java.util.Map;
import static java.util.Map.entry;
public class UnmodifidMapTest {
public static void main(String[] args) {
Map<String, String> empMap = Map.ofEntries(entry("101", "Raja"), entry("102", "Adithya"), entry("103", "Jai"), entry("104", "Chaitanya"));
System.out.println("empMap - " + empMap);
}
}
输出
empMap - {102=Adithya, 101=Raja, 104=Chaitanya, 103=Jai}
相关文章
有用资源
java 参考教程 - 该教程包含有关 java 的更多信息:https://www.cainiaomax.com/java/

