CodeGym /Java Blog /ランダム /Java の LinkedHashMap
John Squirrels
レベル 41
San Francisco

Java の LinkedHashMap

ランダム グループに公開済み

Java の LinkedHashMap とは何ですか?

Collections フレームワークの LinkedHashMap クラスは、MapインターフェイスHashtableおよびLinkedList実装です。エントリをハッシュテーブルに保存し、二重リンク リストを内部で使用して挿入順序を維持します。この LinkedList は、キーがMapに挿入された順序である挿入順序を定義します。HashMapには素早い挿入検索削除という利点がありましたが、 LinkedHashMapではLinkedListの実装によって挿入順序も維持されます。 Java の LinkedHashMap - 1

LinkedHashMapの特徴

  1. キーに基づいた値が含まれます。
  2. ユニークな要素が含まれています。
  3. 1 つの null キーと複数の null 値を持つことができます。
  4. 非同期です。
  5. 挿入順序が維持されるため、反復処理のコストが高くなります。

パフォーマンス要因

LinkedHashMapのパフォーマンスは、主に以下に説明する 2 つの要素に依存します。

容量

容量とは、保存できるエントリの数を意味します。パラメータを指定しない場合、デフォルトの容量は16です。負荷係数 負荷係数とは、パラメータとして指定された特定の割合でHashMapが設定されるたびに、サイズが 2 倍の新しい HashMap が作成され、すべてのエントリがこの新しい HashMap に移動されることを意味します。HashMap のデフォルトの負荷係数は0.75です。充填率とも呼ばれます。

LinkedHashMapの宣言

LinkedHashMapを作成するには、まずjava.util.LinkedHashMapパッケージをインポートする必要があります。

LinkedHashMap<Key, Value> lhm = new LinkedHashMap<>(12, 0.5f);
ここで、 Key はマップ内のキーのタイプです。 値は、マップ内でマップされた値のタイプです。 12は容量で、マップに 12 個のエントリを保存することを意味します。 0.5fは負荷係数で、50% が入力されると新しいマップが作成され、すべての値がこの新しいマップに移動されることを意味します。

LinkedHashMap の一般的なメソッド

以下は、 LinkedHashMapの一般的なメソッドのリストです。
メソッド 説明
クリア() マップ内のすべてのマッピングを削除します。
containsValue(オブジェクト値) マップがキーを指定された値にマップする場合は true を返します。
エントリーセット() マップ内のマッピングの Set ビューを返します。
get(オブジェクトキー) 指定されたキーに対する値を返すか、キーが指定されていない場合は null を返します。
キーセット() マップ内のキーの Set ビューを返します。
値() マップ内の値のコレクション ビューを返します。
getOrDefault(オブジェクトキー, VdefaultValue) 指定されたキーが関連付けられている値を返します。キーが関連付けられていない場合は、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 、Three] 値: [2、1、3] 返される数値: 3 返される数値: 5 削除される値: 2 キー/値のマッピング: [One=1、Three=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