Java 9 创建不可变Map的工厂方法

Java 9 创建不可变Map的工厂方法

Java 9中,有一些功能被添加到Java语言中,而不可变Map的工厂方法就是其中之一。
不可变Map的特点

  • 顾名思义,这些Map是不可变的。
  • 如果试图在Map中添加、删除和更新元素,我们会出现UnsupportedOperationException。
  • 不可变的Map也不允许出现空元素。
  • 如果试图用空元素创建一个不可变的Map,我们会出现NullPointerException。如果试图在Map中添加空元素,我们会产生UnsupportedOperationException。

Java 8中创建不可变的Map

要在java 8中创建不可修改的Map,我们使用java.util.unmodifiableMap(Map)方法。 unmodifiableMap(Map): 该方法返回指定Map的不可修改的视图。这个方法允许模块为用户提供对内部Map的 “只读 “访问。

语法:公共静态Map unmodifiableMap(Map map)
返回:一个指定地图的不可修改的视图。
异常: NA

不变的空和无空Map的Java代码。

// Java code illustrating immutable map in java 8
import java.util.*;
class ImmutableListDemo
{
    public static void main(String args[])
    {
        // empty map
        Map<Integer, String> empty = new HashMap();
        Map immutable1 = Collections.unmodifiableMap(empty);
           
        // non-empty map
        Map<Integer, String> non_empty = new HashMap();
        non_empty.put(1, "ide");
           
        Map immutable2 = Collections.unmodifiableMap(non_empty);
           
        // adding key-value pair in these immutable map
        immutable1.put(1,"gfg");
        immutable2.put(2,"quiz");
              
    }
}

上述代码将产生异常,因为我们试图在不可变的Map中添加键值对。

Runtime Error : Exception in thread "main" 
java.lang.UnsupportedOperationException
at java.util.Collections$UnmodifiableMap.put(Collections.java:1457)
at ImmutableListDemo.main(File.java:17)

在java 9中 创建不可变的Map

为了在java 9中创建不可变的Map,我们使用 of()ofEntries() 方法。
Java代码,在java 9中创建不可变的Map。

// Java code illustrating of() method
import java.util.*;
class ImmutableListDemo
{
    public static void main(String args[])
    {
        // empty immutable map
        Map<Integer, String> immutable1 = Map.of();
           
        // non-empty immutable map
        Map<Integer, String> immutable2 = Map.of(1, "ide",2, "quiz");
          
        // adding key-value pair in these immutable map
        immutable1.put(1,"gfg");
        immutable2.put(3,"contribute");
              
    }
}

运行上述代码后,我们会出现UnsupportedOperationException。
Java代码,在Java 9中使用Map.ofEntries()方法创建不可变的Map。

// Java code illustrating ofEntries method
import java.util.*;
import java.util.Map.Entry;
class ImmutableListDemo
{
    public static void main(String args[])
    {
        // empty immutable map
        Map<Integer, String> immutable = Map.ofEntries();
           
        // non-empty immutable map
        Map.Entry<Integer, String> entry1 = Map.entry(1, "gfg");
        Map.Entry<Integer, String> entry2 = Map.entry(2, "contribute");
           
        Map<Integer, String> immubatleMap = Map.ofEntries(entry1,
                         entry2);     
    }
}

所以of()和ofEntries()是java 9中用来创建不可变的Map的方法。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程