我们如何在Java 9中创建不可修改的Map?

一个不可修改的映射是指其键 和值 不能添加,删除或更新 一次映射的不可修改的实例已创建。静态工厂方法: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),...)

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 9中创建不可修改的Map? 的全部内容, 来源链接: utcz.com/z/357443.html

回到顶部