<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # Java 9 - 用于創建不可變`Map`的工廠方法 > 原文: [https://beginnersbook.com/2018/04/java-9-factory-methods-to-create-immutable-map/](https://beginnersbook.com/2018/04/java-9-factory-methods-to-create-immutable-map/) 在之前的教程中,我們了解了使用 Java 9 中引入的**工廠方法**創建[不可變`List`](https://beginnersbook.com/2018/04/java-9-factory-method-to-create-immutable-list/)和[不可變`Set`](https://beginnersbook.com/2018/04/java-9-factory-methods-to-create-immutable-set/)。在本指南中,我們將學習**如何使用 Java 9 工廠方法創建不可變`Map`和`Map.Entry`。 ## 1.在 Java 9 之前創建不可變`Map` 在我們看到如何使用 Java 9 工廠方法創建不可變`Map`之前,讓我們看看我們在 Java 9 之前如何創建它們。 ### 1.1 在 Java 9 之前創建空映射 我們曾經使用[`Collections`](https://beginnersbook.com/java-collections-tutorials/)類的`unmodifiableMap()`方法來創建不可修改的(不可變的)`Map`。 ```java Map<String,String> map = new HashMap<String, String>(); Map<String,String> immutableMap = Collections.unmodifiableMap(map); ``` 讓我們在 [JShell](https://beginnersbook.com/2018/04/java-9-jshell-repl/) 中測試一下。 ![Creating Empty Map before Java 9](https://img.kancloud.cn/ca/2b/ca2b47eacce4411d4082ba7d87a0f01a_1024x501.jpg) ### 1.2 在 Java 9 之前創建非空映射 ```java Map<String,String> map = new HashMap<String, String>(); map.put("Key1", "Jon"); map.put("Key2", "Steve"); map.put("Key3", "Mia"); map.put("Key4", "Lora"); Map<String,String> immutableMap = Collections.unmodifiableMap(map); ``` 讓我們在 JShell 中測試它。 ![Java 9 Factory Methods to create immutable Map](https://img.kancloud.cn/84/d3/84d394343c44f726fa6fe89632ec06d4_1024x697.jpg) ## 2\. Java 9 工廠方法創建不可變`Map` Java 9 中引入了幾種有用的工廠方法來創建不可修改的`Map`。我們將采用與上面相同的示例來比較 Java 9 中的事情變得更容易。在 Java 9 之前編寫的代碼行在工廠方法的幫助下大大減少了。 ### 2.1 Java 9 - 使用`Map.of()`工廠方法的不可變空映射 **我們用于空映射的方法:** ```java static <K,V> Map<K,V> of() ``` **示例:** ```java Map<String,String> immutableMap = Map.of() ``` **在 JShell 中測試:** ```java jshell> Map<String,String> immutableMap = Map.of() immutableMap ==> {} ``` ### 2.2 Java 9 - 使用`Map.of(Key, Value ...)`工廠方法創建不可變非空映射 ```java static <K,V> Map<K,V> of(K k1, V v1, K k2, V v2...) ``` **示例:** 為了演示使用`Map.of()`工廠方法,我們采用了與上面使用`unmodifiableMap()`方法相同的示例。正如您所看到的,它在 Java 9 中是多么簡單。我們在一行中減少了 6 行代碼。 ```java Map<String, String> immutableMap = Map.of("Key1", "Jon", "Key2", "Steve", "Key3", "Mia", "Key4", "Lora") ``` **在 JShell 中測試:** ```java jshell> Map<String, String> immutableMap = Map.of("Key1", "Jon", "Key2", "Steve", "Key3", "Mia", "Key4", "Lora") immutableMap ==> {Key3=Mia, Key4=Lora, Key1=Jon, Key2=Steve} ``` ## 什么是不可變的映射? 1. 不可變`Map`不允許添加,刪除和更新其元素。如果您嘗試執行這些操作,程序將拋出`UnsupportedOperationException`。 ```java jshell> Map<String, String> immutableMap = Map.of("Key1", "Jon", "Key2", "Steve", "Key3", "Mia", "Key4", "Lora") immutableMap ==> {Key3=Mia, Key4=Lora, Key1=Jon, Key2=Steve} jshell> immutableMap.put("Key5", "Chaitanya"); | java.lang.UnsupportedOperationException thrown: | at ImmutableCollections.uoe (ImmutableCollections.java:71) | at ImmutableCollections$AbstractImmutableMap.put (ImmutableCollections.java:558) | at (#2:1) ``` 2. 他們不允許`null`元素。添加`null`元素會拋出相同的`UnsupportedOperationException`。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看