<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Java 9 不可變映射示例 > 原文: [https://javatutorial.net/java-9-immutable-map-example](https://javatutorial.net/java-9-immutable-map-example) 本示例演示了如何使用新的 Java 9 `Collections`工廠方法創建不可變的`Map`。 在 Java 9 發行版中,Oracle 從其他流行的 [JVM](https://javatutorial.net/jvm-explained) 語言(例如 Kotlin,Guava,Scala 等)獲取工作實踐方面邁出了第一步。做到這一點時要適當考慮到跨語言的向后兼容性和語法一致性。 [JDK](https://javatutorial.net/install-java-8-jdk-on-ubuntu) 。 那些 [Java 9](https://javatutorial.net/install-java-9-eclipse) 新功能之一是**不變(不可修改)映射**的創建。 ![Java 9 immutable Map example](https://img.kancloud.cn/fc/fe/fcfe0fdf4fe38474333123835db412b1_707x262.jpg) Java 9 不可變映射示例 在 Java 9 之前,創建不變 Map 是某種冗長的任務。 例如,要使用 Java 9 之前的版本創建一個空的不可變`Map`,我們使用以下代碼: ```java package javatutorial.net; import java.util.Collections; import java.util.HashMap; import java.util.Map; public class UnmodifiableMapExample { public static void main(String[] args) { Map<Integer, String> emptyMap = new HashMap<>(); Map<Integer, String> immutableEmptyMap = Collections.unmodifiableMap(emptyMap); } } ``` ## 什么是不可變映射 一旦在 Java 中創建了不可變對象,就無法更改值。 不可變的映射也不例外。 您**不能**: * 鍵和值無法添加,刪除或更新。 如果您嘗試這樣做,將在`java.lang.UnsupportedOperationException`中解決 * 修改映射條目。 嘗試這樣做會導致`java.lang.UnsupportedOperationException` * 在映射中使用`null`鍵和值。 如果您嘗試向映射添加空鍵或空值,則最終會顯示`java.lang.NullPointerException` ## 在 Java 9 中創建空的不可變映射 要使用 Java 9 創建一個空`Map`,我們需要做的就是調用工廠`Map`方法`of()`,請參見下面的示例 ```java package javatutorial.net; import java.util.Map; public class Java9EmptyImmutableMapExample { public static void main(String[] args) { Map<Integer,String> emptyImmutableMap = Map.of(); } } ``` ## 在 Java 9 中使用條目創建不可變映射 有 10 種工廠方法可創建多達 10 個鍵值對的不可變`Map`(來源: [Java 9 Map 接口 Javadoc](https://docs.oracle.com/javase/9/docs/api/java/util/Map.html) ): ```java static <K,V> Map<K,V> of?(K k1, V v1) Returns an immutable map containing a single mapping. static <K,V> Map<K,V> of?(K k1, V v1, K k2, V v2) Returns an immutable map containing two mappings. static <K,V> Map<K,V> of?(K k1, V v1, K k2, V v2, K k3, V v3) Returns an immutable map containing three mappings. static <K,V> Map<K,V> of?(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4) Returns an immutable map containing four mappings. static <K,V> Map<K,V> of?(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5) Returns an immutable map containing five mappings. static <K,V> Map<K,V> of?(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6) Returns an immutable map containing six mappings. static <K,V> Map<K,V> of?(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7) Returns an immutable map containing seven mappings. static <K,V> Map<K,V> of?(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8) Returns an immutable map containing eight mappings. static <K,V> Map<K,V> of?(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9) Returns an immutable map containing nine mappings. static <K,V> Map<K,V> of?(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10) Returns an immutable map containing ten mappings. ``` 以下示例創建具有 3 個條目的不可變`Map`: ```java package javatutorial.net; import java.util.Map; public class Java9ImmutableMapExample { public static void main(String[] args) { Map<Integer,String> map = Map.of(1, "A", 2, "B", 3, "C"); } } ``` ## 使用`Map.ofEntries()`方法在 Java 9 中創建不可變映射 Java 9 中的`Map`接口提供了另一種實用程序方法來創建不可變映射 – `ofEntries`。 該方法的簽名如下所示: ```java static <K,V> Map<K,V> ofEntries?(Map.Entry<? extends K,? extends V>... entries) ``` 這使我們可以向`Map`插入任意數量的條目。 以下示例創建了 3 個條目,并在`ofEntries()`方法的幫助下創建了一個不變的`Map`: ```java package javatutorial.net; import java.util.Map; public class Java9ImmutableMapOfEntriesExample { public static void main(String[] args) { Map.Entry<Integer,String> e1 = Map.entry(1, "A"); Map.Entry<Integer,String> e2 = Map.entry(2, "B"); Map.Entry<Integer,String> e3 = Map.entry(3, "C"); Map<Integer,String> map = Map.ofEntries(e1, e2, e3); } } ``` 您可以通過靜態導入`java.util.Map.entry`大大縮短代碼,請參見以下示例: ```java package javatutorial.net; import static java.util.Map.entry; import java.util.Map; public class Java9ImmutableMapOfEntriesExample { public static void main(String[] args) { Map<Integer,String> map = Map.ofEntries(entry(1,"A"), entry(2,"B"), entry(3,"C")); } } ``` 您將在此處找到的許多教程都是基于 Edward Lavieri 博士和 Peter Verhas 博士撰寫的 [Mastering Java 9](https://www.amazon.com/Mastering-Java-reactive-modular-concurrent/dp/1786468735/ref=sr_1_3?ie=UTF8&qid=1520921208&sr=8-3&keywords=mastering+java+9) 。 本書將為您提供對 Java 9 新概念和工具的完整而深刻的理解。
                  <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>

                              哎呀哎呀视频在线观看