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

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # Java `EnumMap` > 原文: [https://www.programiz.com/java-programming/enummap](https://www.programiz.com/java-programming/enummap) #### 在本教程中,我們將借助示例學習 Java `EnumMap`類及其操作。 Java 集合框架的`EnumMap`類為枚舉的元素提供了映射實現。 在`EnumMap`中,枚舉元素用作**鍵**。 它實現了[`Map`接口](/java-programming/map "Java Map Interface")。 ![Java EnumMap implements the Map interface.](https://img.kancloud.cn/0e/d4/0ed4d61fc93661a9fa42e8c878fad7f8_376x558.png) 在學習`EnumMap`之前,請確保了解 [Java 枚舉](/java-programming/enums "Java Enums")。 * * * ## 創建一個`EnumMap` 為了創建一個枚舉映射,我們必須首先導入`java.util.EnumMap`包。 導入包后,可以使用以下方法在 Java 中創建枚舉映射。 ```java enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE } EnumMap<Size, Integer> sizes = new EnumMap<>(Size.class); ``` 在上面的示例中,我們創建了一個名為`sizes`的枚舉映射。 這里, * `Size` - 映射到值的枚舉的**鍵** * `Integer` - 與相應鍵關聯的枚舉映射的**值** * * * ## `EnumMap`的方法 `EnumMap`類提供了允許我們在枚舉映射上執行各種元素的方法。 * * * ## 將元素插入`EnumMap` * `put()` - 將指定的鍵/值映射(條目)插入到枚舉映射中 * `putAll()` - 將指定映射的所有條目插入此映射 例如, ```java import java.util.EnumMap; class Main { enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE } public static void main(String[] args) { // Creating an EnumMap of the Size enum EnumMap<Size, Integer> sizes1 = new EnumMap<>(Size.class); // Using the put() Method sizes1.put(Size.SMALL, 28); sizes1.put(Size.MEDIUM, 32); System.out.println("EnumMap1: " + sizes1); EnumMap<Size, Integer> sizes2 = new EnumMap<>(Size.class); // Using the putAll() Method sizes2.putAll(sizes1); sizes2.put(Size.LARGE, 36); System.out.println("EnumMap2: " + sizes2); } } ``` **輸出** ```java EnumMap1: {SMALL=28, MEDIUM=32} EnumMap2: {SMALL=28, MEDIUM=32, LARGE=36} ``` 在上面的示例中,我們使用`putAll()`方法將枚舉映射`size1`的所有元素插入到`size2`的枚舉圖中。 也可以使用`putAll()`將元素從其他映射(例如`HashMap`,`TreeMap`等)插入到枚舉映射中。 但是,所有映射都應具有相同的枚舉類型。 * * * ## 訪問`EnumMap`元素 **1.使用`entrySet()`,`keySet()`和`values()`** * `entrySet()` - 返回一個枚舉映射的所有鍵/值映射(條目)的集合 * `keySet()` - 返回一個枚舉映射的所有鍵的集合 * `values()` - 返回一個枚舉映射的所有值的集合 例如: ```java import java.util.EnumMap; class Main { enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE } public static void main(String[] args) { // Creating an EnumMap of the Size enum EnumMap<Size, Integer> sizes = new EnumMap<>(Size.class); sizes.put(Size.SMALL, 28); sizes.put(Size.MEDIUM, 32); sizes.put(Size.LARGE, 36); sizes.put(Size.EXTRALARGE, 40); System.out.println("EnumMap: " + sizes); // Using the entrySet() Method System.out.println("Key/Value mappings: " + sizes.entrySet()); // Using the keySet() Method System.out.println("Keys: " + sizes.keySet()); // Using the values() Method System.out.println("Values: " + sizes.values()); } } ``` **輸出**: ```java EnumMap: {SMALL=28, MEDIUM=32, LARGE=36, EXTRALARGE=40} Key/Value mappings: [SMALL=28, MEDIUM=32, LARGE=36, EXTRALARGE=40] Keys: [SMALL, MEDIUM, LARGE, EXTRALARGE] Values: [28, 32, 36, 40] ``` **2.使用`get()`方法** `get()`方法返回與指定鍵關聯的值。 如果找不到指定的鍵,則返回`null`。 例如: ```java import java.util.EnumMap; class Main { enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE } public static void main(String[] args) { // Creating an EnumMap of the Size enum EnumMap<Size, Integer> sizes = new EnumMap<>(Size.class); sizes.put(Size.SMALL, 28); sizes.put(Size.MEDIUM, 32); sizes.put(Size.LARGE, 36); sizes.put(Size.EXTRALARGE, 40); System.out.println("EnumMap: " + sizes); // Using the get() Method int value = sizes.get(Size.MEDIUM); System.out.println("Value of MEDIUM: " + value); } } ``` **輸出**: ```java EnumMap: {SMALL=28, MEDIUM=32, LARGE=36, EXTRALARGE=40} Value of MEDIUM: 32 ``` * * * ## 刪除`EnumMap`元素 * `remove(key)` - 返回并從映射中刪除與指定鍵關聯的條目 * `remove(key, value)` - 僅當指定鍵映射到指定值并返回布爾值時,才從映射中刪除條目 例如: ```java import java.util.EnumMap; class Main { enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE } public static void main(String[] args) { // Creating an EnumMap of the Size enum EnumMap<Size, Integer> sizes = new EnumMap<>(Size.class); sizes.put(Size.SMALL, 28); sizes.put(Size.MEDIUM, 32); sizes.put(Size.LARGE, 36); sizes.put(Size.EXTRALARGE, 40); System.out.println("EnumMap: " + sizes); // Using the remove() Method int value = sizes.remove(Size.MEDIUM); System.out.println("Removed Value: " + value); boolean result = sizes.remove(Size.SMALL, 28); System.out.println("Is the entry {SMALL=28} removed? " + result); System.out.println("Updated EnumMap: " + sizes); } } ``` **輸出**: ```java EnumMap: {SMALL=28, MEDIUM=32, LARGE=36, EXTRALARGE=40} Removed Value: 32 Is the entry {SMALL=28} removed? True Updated EnumMap: {LARGE=36, EXTRALARGE=40} ``` * * * ## 替換`EnumMap`元素 * `replace(key, value)` - 用新的`value`替換與指定的`key`相關的值 * `replace(key, old, new)` - 僅當`old`值已與指定的`key`關聯時,才用`new`值替換`old`值。 * `replaceAll(function)` - 用指定的`function`的結果替換映射的每個值 ```java import java.util.EnumMap; class Main { enum Size { SMALL, MEDIUM, LARGE, EXTRALARGE } public static void main(String[] args) { // Creating an EnumMap of the Size enum EnumMap<Size, Integer> sizes = new EnumMap<>(Size.class); sizes.put(Size.SMALL, 28); sizes.put(Size.MEDIUM, 32); sizes.put(Size.LARGE, 36); sizes.put(Size.EXTRALARGE, 40); System.out.println("EnumMap: " + sizes); // Using the replace() Method sizes.replace(Size.MEDIUM, 30); sizes.replace(Size.LARGE, 36, 34); System.out.println("EnumMap using replace(): " + sizes); // Using the replaceAll() Method sizes.replaceAll((key, oldValue) -> oldValue + 3); System.out.println("EnumMap using replaceAll(): " + sizes); } } ``` **輸出**: ```java EnumMap: {SMALL=28, MEDIUM=32, LARGE=36, EXTRALARGE=40} EnumMap using replace(): {SMALL=28, MEDIUM=30, LARGE=34, EXTRALARGE=40} EnumMap using replaceAll(): {SMALL=31, MEDIUM=33, LARGE=37, EXTRALARGE=43} ``` 在上面的程序中,請注意以下語句 ```java sizes.replaceAll((key, oldValue) -> oldValue + 3); ``` 在此,該方法訪問映射的所有條目。 然后,它將所有值替換為 [lambda 表達式](/java-programming/lambda-expression "Java lambda")提供的新值。 * * * ## 其他方法 | 方法 | 描述 | | --- | --- | | `clone()` | 創建`EnumMap`的副本 | | `containsKey()` | 在`EnumMap`中搜索指定的鍵,并返回布爾結果 | | `containsValue()` | 在`EnumMap`中搜索指定的值并返回布爾結果 | | `size()` | 返回`EnumMap`的大小 | | `clear()` | 從`EnumMap`中刪除所有條目 | * * * ## `EnumSet`與`EnumMap` [EnumSet](/java-programming/enumset "Java EnumSet Class") 和`EnumMap`類都提供用于存儲枚舉值的數據結構。 但是,它們之間存在一些主要差異。 * 枚舉集在內部以位序列表示,而枚舉圖在內部以數組表示。 * 枚舉集是使用其預定義方法(例如`allOf()`,`noneOf()`,`of()`等)創建的。但是,枚舉映射是使用其構造器創建的。 * * * ## `Cloneable`和`Serializable`接口 `EnumMap`類還實現`Cloneable`和`Serializable`接口。 **`Cloneable`接口** 它允許`EnumMap`類制作該類實例的副本。 **`Serializable`接口** 每當需要通過網絡傳輸 Java 對象時,就需要將對象轉換為位或字節。 這是因為 Java 對象無法通過網絡傳輸。 `Serializable`接口允許對類進行序列化。 這意味著可以將實現`Serializable`的類的對象轉換為位或字節。
                  <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>

                              哎呀哎呀视频在线观看