【Javaの基礎】Java Mapについて詳しく解説

序文

Java のコレクション フレームワークでは、Mapインターフェイスを使用してキーと値のペアを保存し、キーに基づいて検索および操作するためのデータ構造を提供します。Mapインターフェイスの実装クラスは、追加、削除、更新、検索など、キーと値のペアを操作するための豊富なメソッドを提供します。この記事では、Java のインターフェイスとその一般的な実装クラス ( 、 、および をMap含む) を詳しく紹介し、いくつかのサンプル コードを提供します。HashMapTreeMapLinkedHashMap

1. マップの概要

Mapインターフェイスはキーと値のペアのコレクションであり、Collectionインターフェイス内のsize()および およびその他isEmpty()のメソッドを継承します。また、キーに基づいて値を検索するためのメソッドと、キーと値を追加、削除、更新するためのメソッドも提供します。ペア。Java では、Mapインターフェイスにはいくつかの共通の実装クラスがあり、それぞれが異なるパフォーマンスと用途を持っています。

  • HashMap: ハッシュ テーブルの実装に基づいており、高速な検索と挿入操作を備えており、キーと値のペアを迅速に見つける必要があるシナリオに適しています。
  • TreeMap: 赤黒ツリーの実装に基づいて、キーを並べ替えることができ、キーを並べ替える必要があるシナリオに適した一連の並べ替え関連メソッドが提供されます。
  • LinkedHashMap: ハッシュ テーブルとリンク リストの実装に基づいて、キーと値のペアの挿入順序が維持され、挿入順序を維持する必要があるシナリオに適しています。

2. ハッシュマップ

HashMapインターフェースの共通実装クラスでありMap、ハッシュテーブルに基づいて実装されており、高速な検索・挿入操作を実現します。一般的に使用されるいくつかの方法を次に示しますHashMap

  • put(K key, V value): 指定されたキーと値のペアを に追加しますHashMap
  • remove(Object key): 指定されたキーのキーと値のペアをHashMapそこから。
  • get(Object key): 指定されたキーに対応する値を返します。
  • containsKey(Object key):HashMap指定されたキーが含まれているかどうかを確認します。
  • containsValue(Object value)HashMap指定した値が含まれているかどうかを確認します。
  • size():HashMapキーと値のペアの数を返します。

使用されるサンプルコードは次のとおりですHashMap

import java.util.HashMap;
import java.util.Map;

public class HashMapExample {
    
    
    public static void main(String[] args) {
    
    
        Map<String, Integer> scores = new HashMap<>();
        scores.put("Alice", 90);
        scores.put("Bob", 80);
        scores.put("Charlie", 95);

        System.out.println("Scores: " + scores);

        scores.remove("Bob");
        System.out.println("Scores after removal: " + scores);

        int aliceScore = scores.get("Alice");
        System.out.println("Alice's score: " + aliceScore);

        boolean containsCharlie = scores.containsKey("Charlie");
        System.out.println("Contains Charlie: " + containsCharlie);
    }
}

上の例では、HashMapインスタンスを作成し、いくつかの生徒のスコアを追加しました。次に、HashMapそこから、キーによって対応する値を取得します。最後に、HashMap特定のキーが に含まれているかどうかを確認します。

3. ツリーマップ

TreeMapこれはMapインターフェースのもう 1 つの一般的な実装クラスであり、赤黒ツリーに基づいて実装され、キーをソートでき、ソートに関連する一連のメソッドを提供します。一般的に使用されるいくつかの方法を次に示しますTreeMap

  • put(K key, V value): 指定されたキーと値のペアを に追加しますTreeMap
  • remove(Object key): 指定されたキーのキーと値のペアをTreeMapそこから。
  • get(Object key): 指定されたキーに対応する値を返します。
  • containsKey(Object key):TreeMap指定されたキーが含まれているかどうかを確認します。
  • size():TreeMapキーと値のペアの数を返します。
  • firstKey():TreeMap文字列内の最初のキーを返します。
  • lastKey():TreeMap戻り値の最後のキー。

使用されるサンプルコードは次のとおりですTreeMap

import java.util.TreeMap;
import java.util.Map;

public class TreeMapExample {
    
    
    public static void main(String[] args) {
    
    
        Map<String, Integer> scores = new TreeMap<>();
        scores.put("Alice", 90);
        scores.put("Bob", 80);
        scores.put("Charlie", 95);

        System.out.println("Scores: " + scores);

        scores.remove("Bob");
        System.out.println("Scores after removal: " + scores);

        int aliceScore = scores.get("Alice");
        System.out.println("Alice's score: " + aliceScore);

        String firstKey = scores.firstKey();
        String lastKey = scores.lastKey();
        System.out.println("First key: " + firstKey);
        System.out.println("Last key: " + lastKey);
    }
}

上の例では、TreeMapインスタンスを作成し、いくつかの生徒のスコアを追加しました。TreeMap赤黒ツリーの実装に基づいているため、キーの順序はキーの自然な順序に従ってソートされます。次に、TreeMapそこから、キーによって対応する値を取得します。最後に、firstKey()andメソッドを使用して最初と最後のキーlastKey()を取得します。TreeMap

4.リンクされたハッシュマップ

LinkedHashMapMapインターフェイスの別の実装クラスであり、ハッシュ テーブルとリンク リストの実装に基づいており、キーと値のペアの挿入順序を維持します。一般的に使用されるいくつかの方法を次に示しますLinkedHashMap

  • put(K key, V value): 指定されたキーと値のペアを に追加しますLinkedHashMap
  • remove(Object key): 指定されたキーのキーと値のペアをLinkedHashMapそこから。
  • get(Object key): 指定されたキーに対応する値を返します。
  • containsKey(Object key):LinkedHashMap指定されたキーが含まれているかどうかを確認します。
  • size():LinkedHashMapキーと値のペアの数を返します。

使用されるサンプルコードは次のとおりですLinkedHashMap

import java.util.LinkedHashMap;
import java.util.Map;

public class LinkedHashMapExample {
    
    
    public static void main(String[] args) {
    
    
        Map<String, Integer> scores = new LinkedHashMap<>();


        scores.put("Alice", 90);
        scores.put("Bob", 80);
        scores.put("Charlie", 95);

        System.out.println("Scores: " + scores);

        scores.remove("Bob");
        System.out.println("Scores after removal: " + scores);

        int aliceScore = scores.get("Alice");
        System.out.println("Alice's score: " + aliceScore);

        boolean containsCharlie = scores.containsKey("Charlie");
        System.out.println("Contains Charlie: " + containsCharlie);
    }
}

上の例では、LinkedHashMapインスタンスを作成し、いくつかの生徒のスコアを追加しました。ハッシュ テーブルとリンク リストに基づいて実装されるためLinkedHashMap、キーと値のペアの挿入順序が維持されます。次に、LinkedHashMapそこから、キーによって対応する値を取得します。最後に、LinkedHashMap特定のキーが に含まれているかどうかを確認します。

要約する

Mapこの記事では、 Java のインターフェイスとその一般的な実装クラス、HashMapおよびTreeMapについて詳しく説明しますLinkedHashMapそれらの特性と使用法を理解することで、実際のニーズに応じてキーと値のペアを保存および操作するための適切な実装クラスを選択できますMap

HashMapこれは、キーと値のペアを迅速に検索して挿入する必要があるシナリオ、TreeMapキーを並べ替える必要があるシナリオ、およびLinkedHashMap挿入順序を維持する必要があるシナリオに適しています。

この記事が Java インターフェイスの理解と使用に役立つことを願っていますMap

参考文献:

添付: サンプルコード

HashMapExample.java

import java.util.HashMap;
import java.util.Map;

public class HashMapExample {
    
    
    public static void main(String[] args) {
    
    
        Map<String, Integer> scores = new HashMap<>();
        scores.put("Alice", 90);
        scores.put("Bob", 80);
        scores.put("Charlie", 95);

        System.out.println("Scores: " + scores);

        scores.remove("Bob");
        System.out.println("Scores after removal: " + scores);

        int aliceScore = scores.get("Alice");
        System.out.println("Alice's score: " + aliceScore);

        boolean containsCharlie = scores.containsKey("Charlie");
        System.out.println("Contains Charlie: " + containsCharlie);
    }
}

TreeMapExample.java

import java.util.TreeMap;
import java.util.Map;

public class TreeMapExample {
    
    
    public static void main(String[] args) {
    
    
        Map<String, Integer> scores = new TreeMap<>();
        scores.put("Alice", 90);
        scores.put("Bob", 80);
        scores.put("Charlie", 95);

        System.out.println("Scores: " + scores);

        scores.remove("Bob");
        System.out.println("Scores after removal: " + scores);

        int aliceScore = scores.get("Alice");
        System.out.println("Alice's score: " + aliceScore);

        String firstKey = scores.firstKey();
        String lastKey = scores.lastKey();
        System.out.println("First key: " + firstKey);
        System.out.println("Last key: " + lastKey);
    }
}

LinkedHashMapExample.java

import java.util.LinkedHashMap;
import java.util.Map;

public class LinkedHashMapExample {
    
    
    public static void main(String[] args) {
    
    
        Map<String, Integer> scores = new LinkedHashMap<>();
        scores.put("Alice", 90);
        scores.put("Bob", 80);
        scores.put("Charlie", 95);

        System.out.println("Scores: " + scores);

        scores.remove("Bob");
        System.out.println("Scores after removal: " + scores);

        int aliceScore = scores.get("Alice");
        System.out.println("Alice's score: " + aliceScore);

        boolean containsCharlie = scores.containsKey("Charlie");
        System.out.println("Contains Charlie: " + containsCharlie);
    }
}

おすすめ

転載: blog.csdn.net/qq_21484461/article/details/131384612