CodeGym /Java Blog /Toto sisi /Java中的LinkedHashMap
John Squirrels
等級 41
San Francisco

Java中的LinkedHashMap

在 Toto sisi 群組發布

Java中的LinkedHashMap是什麼?

Collections框架的LinkedHashMap類別是Map介面HashtableLinkedList實作。它將其條目儲存在雜湊表中,並在內部使用雙向鍊錶來維護插入順序。此 LinkedList 定義插入順序,即鍵插入到Map中的順序。HashMap提供了快速插入搜尋刪除的優點,但在LinkedHashMap中LinkedList的實作也維護了插入順序。 Java 中的 LinkedHashMap - 1

LinkedHashMap的特點

  1. 它包含基於鍵的值。
  2. 它包含獨特的元素。
  3. 它可能有一個空鍵和多個空值。
  4. 它是非同步的。
  5. 它維護插入順序,這導致迭代成本更高。

性能因素

LinkedHashMap的效能主要取決於下面描述的兩個因素。

容量

容量是指它可以儲存的條目數。若不指定參數,預設容量為16 。負載因子 負載因子意味著每當HashMap填入作為參數提供的特定百分比時,就會建立一個大小加倍的新 HashMap,所有條目都會移動到這個新 HashMap。HashMap 的預設負載因子是0.75。它也稱為填充率

LinkedHashMap的聲明

要建立LinkedHashMap,首先我們需要導入包,也就是java.util.LinkedHashMap
LinkedHashMap<Key, Value> lhm = new LinkedHashMap<>(12, 0.5f);
這裡, Key是映射中鍵的型別。 Value是映射中映射值的型別。 12是容量,這意味著它將在地圖中儲存12個條目。 0.5f是負載因子,這表示當填滿 50% 時,它將建立一個新的Map並將所有值移至這個新的 Map 中。

LinkedHashMap常用方法

這裡列出了LinkedHashMap的一些常用方法。
方法 描述
清除() 刪除地圖中的所有映射。
containsValue(物件值) 如果對應將鍵對應到指定值,則傳回 true。
條目集() 傳回地圖中已對應的設定視圖。
取得(對象鍵) 傳回指定鍵的值,如果未指定鍵,則傳回 null。
鍵集() 返回地圖中鍵的設定視圖。
值() 傳回地圖中值的集合視圖。
getOrDefault(物件鍵, V defaultValue) 傳回與指定鍵關聯的值;如果沒有關聯鍵,則傳回 defaultValue。

LinkedHasMap 範例

import java.util.LinkedHashMap;

class Main {
    public static void main(String[] args) {
        // Creating a LinkedHashMap of odd numbers
        LinkedHashMap<String, Integer> oddNumbers = new LinkedHashMap<>();
        // Using the put() method
        oddNumbers.put("One", 1);
        oddNumbers.put("Three", 3);
        System.out.println("LinkedHashMap1: " + oddNumbers);

        // Creating another LinkedHashMap
        LinkedHashMap<String, Integer> numbers = new LinkedHashMap<>();
        numbers.put("Two", 2);
        // Using putAll() method
        numbers.putAll(oddNumbers);
        System.out.println("LinkedHashMap2: " + numbers);

        // Using entrySet() method
        System.out.println("Key/Value mappings: " + numbers.entrySet());

        // Using keySet() method
        System.out.println("Keys: " + numbers.keySet());

        // Using values() method
        System.out.println("Values: " + numbers.values());

        // Using get() method
        int value1 = numbers.get("Three");
        System.out.println("Returned Number: " + value1);

        // Using getOrDefault() method
        int value2 = numbers.getOrDefault("Five", 5);
        System.out.println("Returned Number: " + value2);

        // Using remove() method
        int value = numbers.remove("Two");
        System.out.println("Removed value: " + value);

        // Using entrySet() method
        System.out.println("Key/Value mappings: " + numbers.entrySet());
    }
}

輸出

LinkedHashMap1: {One=1, Three=3} LinkedHashMap2: {Two=2, One=1, Three=3} 鍵/值映射:[Two=2, One=1, Three=3] 鍵:[Two, One ,三] 值:[2, 1, 3] 傳回的數量:3 傳回的數量:5 刪除的值:2 鍵/值映射:[一=1,三=3]

LinkedHashMap 與 HashMap

讓我們看看它們之間的一些區別,儘管它們都實作了Map介面。
  1. LinkedHashMap在內部實作雙向鍊錶時維護插入順序。
  2. LinkedHashMap需要更多的儲存空間,因為它實作了LinkedList
  3. 在效能方面,LinkedHashMap比HashMap慢。

結論

我們希望您了解Java 中的LinkedHashMap類別、它的不同方法及其實作。請隨意練習,並在需要更多幫助時返回。快樂學習!
留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION