一个不可修改的映射是指其键 和值 不能添加,删除或更新 一次映射的不可修改的实例已创建。静态工厂方法:Map中的Map.of()和Map.ofEntries()提供了一种方便的方法来在Java 9中创建不可修改的映射。
通过使用Map.of()和Map.ofEntries()方法创建的映射实例具有以下特征。
工厂方法返回的映射通常是不可变的。这意味着不能添加,删除或更新键 和值 。调用映射上的任何mutator方法都会导致UnsupportedOperationException。
如果所包含的键/值映射的是自己可变的,它可能会导致映射表现 在-consistentl Ÿ或其内容出现变化。
不可变的映射不允许使用null 键 和值。如果尝试使用空键或空值创建,则会抛出NullPointerException。
在重复 键 在创作本身的时间拒绝。将重复的键传递给静态工厂方法会导致IllegalArgumentException。
如果所有键和值都是可序列化的,则不可变 映射 是可序列 化的。
映射的迭代顺序不确定, 并且可能会更改。
Map.of(k1, v1, k2, v2) Map.ofEntries(entry(k1, v1), entry(k2, v2),...)
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)
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}