<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 `LinkedHashMap` > 原文: [https://www.programiz.com/java-programming/linkedhashmap](https://www.programiz.com/java-programming/linkedhashmap) #### 在本教程中,我們將借助示例學習 Java `LinkedHashMap`類及其操作。 Java 集合框架的`LinkedHashMap`類提供[`Map`接口](/java-programming/map "Java Map interface")的哈希表和鏈表實現。 `LinkedHashMap`接口擴展了[`HashMap`](/java-programming/hashmap)類,以將其條目存儲在哈希表中。 它在內部維護所有條目之間的雙向鏈表,以對條目進行排序。 ![Java LinkedHashMap class extends the HashMap class.](https://img.kancloud.cn/43/11/4311b2c64a02643ad3d8a92b74ec8119_416x558.png) * * * ## 創建一個`LinkedHashMap` 為了創建鏈接的哈希映射,我們必須首先導入`java.util.LinkedHashMap`包。 導入包后,可以使用以下方法在 Java 中創建鏈接的哈希表。 ```java // LinkedHashMap with initial capacity 8 and load factor 0.6 LinkedHashMap<Key, Value> numbers = new LinkedHashMap<>(8, 0.6f); ``` 在上面的代碼中,我們創建了一個名為`number`的鏈接哈希映射。 這里, * `key` - 用于關聯映射中每個元素(值)的唯一標識符 * `value` - 由映射中的鍵關聯的元素 注意部分`new LinkedHashMap<>(8, 0.6)`。 在此,第一個參數是`capcity`,第二個參數是`loadFactor`。 * **`capcity`** - 此鏈接的哈希映射的容量為 8。意味著,它可以存儲 8 個條目。 * **`loadFactor`** - 此鏈接的哈希映射的負載因子為 0.6。 這意味著,只要我們的哈希映射填充了 60%,條目就會被移到新哈希表中,該哈希表的大小是原始哈希表的兩倍。 **默認容量和負載系數** 無需定義其容量和負載因子就可以創建鏈接的哈希映射。 例如, ```java //LinkedHashMap with default capacity and load factor LinkedHashMap<Key, Value> numbers1 = new LinkedHashMap<>(); ``` 默認, * 鏈接的哈希映射的容量將為 16 * 負載系數將為 0.75 **注意**:`LinkedHashMap`類還允許我們定義其條目的順序。 例如 ```java // LinkedHashMap with specified order LinkedHashMap<Key, Value> numbers2 = new LinkedHashMap<>(capacity, loadFactor, accessOrder); ``` 此處,`accessOrder`是布爾值。 其默認值為`false`。 在這種情況下,鏈接的哈希映射中的條目將根據其插入順序進行排序。 但是,如果將`true`作為`accessOrder`傳遞,則鏈接的哈希映射中的條目將按從最近訪問到最近訪問的順序排序。 * * * ## 從其他映射創建`LinkedHashMap` 這是我們如何創建一個包含其他映射所有元素的鏈接哈希表。 ```java import java.util.LinkedHashMap; class Main { public static void main(String[] args) { // Creating a LinkedHashMap of even numbers LinkedHashMap<String, Integer> evenNumbers = new LinkedHashMap<>(); evenNumbers.put("Two", 2); evenNumbers.put("Four", 4); System.out.println("LinkedHashMap1: " + evenNumbers); // Creating a LinkedHashMap from other LinkedHashMap LinkedHashMap<String, Integer> numbers = new LinkedHashMap<>(evenNumbers); numbers.put("Three", 3); System.out.println("LinkedHashMap2: " + numbers); } } ``` **輸出** ```java LinkedHashMap1: {Two=2, Four=4} LinkedHashMap2: {Two=2, Four=4, Three=3} ``` * * * ## `LinkedHashMap`的方法 `LinkedHashMap`類提供允許我們在映射上執行各種操作的方法。 * * * ## 將元素插入`LinkedHashMap` * `put()` - 將指定的鍵/值映射插入到映射中 * `putAll()` - 將指定映射中的所有條目插入此映射中 * `putIfAbsent()` - 如果映射中不存在指定的鍵,則將指定的鍵/值映射插入到映射中 例如, ```java import java.util.LinkedHashMap; class Main { public static void main(String[] args) { // Creating LinkedHashMap of even numbers LinkedHashMap<String, Integer> evenNumbers = new LinkedHashMap<>(); // Using put() evenNumbers.put("Two", 2); evenNumbers.put("Four", 4); System.out.println("Original LinkedHashMap: " + evenNumbers); // Using putIfAbsent() evenNumbers.putIfAbsent("Six", 6); System.out.println("Updated LinkedHashMap(): " + evenNumbers); //Creating LinkedHashMap of numbers LinkedHashMap<String, Integer> numbers = new LinkedHashMap<>(); numbers.put("One", 1); // Using putAll() numbers.putAll(evenNumbers); System.out.println("New LinkedHashMap: " + numbers); } } ``` **輸出**: ```java Original LinkedHashMap: {Two=2, Four=4} Updated LinkedHashMap: {Two=2, Four=4, Six=6} New LinkedHashMap: {One=1, Two=2, Four=4, Six=6} ``` * * * ## 訪問`LinkedHashMap`元素 **1.使用`entrySet()`,`keySet()`和`values()`** * `entrySet()` - 返回一組所有鍵/值映射的映射 * `keySet()` - 返回映射的所有鍵的集合 * `values()` - 返回一組所有映射值 例如: ```java import java.util.LinkedHashMap; class Main { public static void main(String[] args) { LinkedHashMap<String, Integer> numbers = new LinkedHashMap<>(); numbers.put("One", 1); numbers.put("Two", 2); numbers.put("Three", 3); System.out.println("LinkedHashMap: " + numbers); // Using entrySet() System.out.println("Key/Value mappings: " + numbers.entrySet()); // Using keySet() System.out.println("Keys: " + numbers.keySet()); // Using values() System.out.println("Values: " + numbers.values()); } } ``` **輸出**: ```java LinkedHashMap: {One=1, Two=2, Three=3} Key/Value mappings: [One=1, Two=2, Three=3] Keys: [One, Two, Three] Values: [1, 2, 3] ``` **2.使用`get()`和`getOrDefault()`** * `get()` - 返回與指定鍵關聯的值。 如果找不到鍵,則返回`null`。 * `getOrDefault()` - 返回與指定鍵關聯的值。 如果找不到該鍵,它將返回指定的默認值。 例如: ```java import java.util.LinkedHashMap; class Main { public static void main(String[] args) { LinkedHashMap<String, Integer> numbers = new LinkedHashMap<>(); numbers.put("One", 1); numbers.put("Two", 2); numbers.put("Three", 3); System.out.println("LinkedHashMap: " + numbers); // Using get() int value1 = numbers.get("Three"); System.out.println("Returned Number: " + value1); // Using getOrDefault() int value2 = numbers.getOrDefault("Five", 5); System.out.println("Returned Number: " + value2); } } ``` **輸出**: ```java LinkedHashMap: {One=1, Two=2, Three=3} Returned Number: 3 Returned Number: 5 ``` * * * ## 刪除了`LinkedHashMap`元素 * `remove(key)` - 返回并從映射中刪除與指定的`key`相關的條目 * `remove(key, value)` - 僅當將指定的`key`映射為指定的`value`并返回布爾值時,才從映射中刪除條目 例如: ```java import java.util.LinkedHashMap; class Main { public static void main(String[] args) { LinkedHashMap<String, Integer> numbers = new LinkedHashMap<>(); numbers.put("One", 1); numbers.put("Two", 2); numbers.put("Three", 3); System.out.println("LinkedHashMap: " + numbers); // remove method with single parameter int value = numbers.remove("Two"); System.out.println("Removed value: " + value); // remove method with two parameters boolean result = numbers.remove("Three", 3); System.out.println("Is the entry Three removed? " + result); System.out.println("Updated LinkedHashMap: " + numbers); } } ``` **輸出**: ```java LinkedHashMap: {One=1, Two=2, Three=3} Removed value: 2 Is the entry {Three=3} removed? True Updated LinkedHashMap: {One=1} ``` * * * ## `LinkedHashMap`的其他方法 | 方法 | 描述 | | --- | --- | | `clear()` | 從映射中刪除所有條目 | | `containsKey()` | 檢查映射是否包含指定的鍵并返回布爾值 | | `containsValue()` | 檢查映射是否包含指定的值并返回布爾值 | | `size()` | 返回映射的大小 | | `isEmpty()` | 檢查映射是否為空,并返回布爾值 | * * * ## `LinkedHashMap`和`HashMap` `LinkedHashMap`和`HashMap`都實現`Map`接口。 但是,它們之間存在一些差異。 * `LinkedHashMap`在內部維護一個雙向鏈表。 因此,它保持其元素的插入順序。 * `LinkedHashMap`類比`HashMap`需要更多的存儲空間。 這是因為`LinkedHashMap`內部維護鏈表。 * `LinkedHashMap`的性能比`HashMap`慢。
                  <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>

                              哎呀哎呀视频在线观看