工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Industrial programming >> Java

Java ハッシュマップ

Java ハッシュマップ

このチュートリアルでは、例を使用して Java HashMap クラスとそのさまざまな操作について学習します。

HashMap Java コレクション フレームワークのクラスは、ハッシュ テーブル データ構造の機能を提供します。

key/value に要素を格納します ペア。ここで、キーを関連付けるために使用される一意の識別子です

HashMap クラスは Map インターフェイスを実装します。

<図>

HashMap を作成する

ハッシュ マップを作成するには、java.util.HashMap をインポートする必要があります。 最初にパッケージ。パッケージをインポートしたら、Java でハッシュマップを作成する方法を次に示します。

// hashMap creation with 8 capacity and 0.6 load factor
HashMap<K, V> numbers = new HashMap<>();

上記のコードでは、numbers という名前のハッシュマップを作成しました。 .こちらK キーの種類と V を表します 値の型を表します。たとえば、

HashMap<String, Integer> numbers = new HashMap<>();

ここでは、キーのタイプ String です のタイプ Integer です .


例 1:Java で HashMap を作成する

import java.util.HashMap;

class Main {
  public static void main(String[] args) {

    // create a hashmap
    HashMap<String, Integer> languages = new HashMap<>();

    // add elements to hashmap
    languages.put("Java", 8);
    languages.put("JavaScript", 1);
    languages.put("Python", 3);
    System.out.println("HashMap: " + languages);
  }
}

出力

HashMap: {Java=8, JavaScript=1, Python=3}

上記の例では、HashMap を作成しました。 名前付きの言語 .

ここでは、put() を使用しました。 ハッシュマップに要素を追加するメソッド。 put() についてもっと学びましょう メソッドについては、このチュートリアルで後述します。


Java HashMap の基本操作

HashMap クラスは、ハッシュマップに対してさまざまな操作を実行するためのさまざまなメソッドを提供します。このチュートリアルでは、一般的に使用されるいくつかの配列リスト操作を見ていきます:


1. HashMap に要素を追加

ハッシュマップに単一の要素を追加するには、 put() を使用します HashMap のメソッド クラス。たとえば、

import java.util.HashMap;

class Main {
  public static void main(String[] args) {

    // create a hashmap
    HashMap<String, Integer> numbers = new HashMap<>();

    System.out.println("Initial HashMap: " + numbers);
    // put() method to add elements
    numbers.put("One", 1);
    numbers.put("Two", 2);
    numbers.put("Three", 3);
    System.out.println("HashMap after put(): " + numbers);
  }
}

出力

Initial HashMap: {}
HashMap after put(): {One=1, Two=2, Three=3}

上記の例では、HashMap を作成しました。 名前付き 数字 .ここでは、put() を使用しました。 数値に要素を追加するメソッド。

声明に注目してください、

numbers.put("One", 1);

ここでは、String を渡しています。 値 1 キーと Integer として 値 1 put() の値として メソッド。

おすすめの読み物


2. HashMap 要素へのアクセス

get() を使用できます ハッシュマップから値にアクセスするメソッド。たとえば、

import java.util.HashMap;

class Main {
  public static void main(String[] args) {

    HashMap<Integer, String> languages = new HashMap<>();
    languages.put(1, "Java");
    languages.put(2, "Python");
    languages.put(3, "JavaScript");
    System.out.println("HashMap: " + languages);

    // get() method to get value
    String value = languages.get(1);
    System.out.println("Value at index 1: " + value);
  }
}

出力

HashMap: {1=Java, 2=Python, 3=JavaScript}
Value at index 1: Java

上記の例では、式に注目してください。

languages.get(1);

ここでは、get() メソッドはキーを取ります 引数として、対応する を返します キーに関連付けられています。

にもアクセスできます 、 、およびキー/値 keySet() を使用したセット ビューとしてのハッシュマップのペア 、 values() 、および entrySet() 方法。たとえば、

import java.util.HashMap;

class Main {
  public static void main(String[] args) {
    HashMap<Integer, String> languages = new HashMap<>();

    languages.put(1, "Java");
    languages.put(2, "Python");
    languages.put(3, "JavaScript");
    System.out.println("HashMap: " + languages);

    // return set view of keys
    // using keySet()
    System.out.println("Keys: " + languages.keySet());

    // return set view of values
    // using values()
    System.out.println("Values: " + languages.values());

    // return set view of key/value pairs
    // using entrySet()
    System.out.println("Key/Value mappings: " + languages.entrySet());
  }
}

出力

HashMap: {1=Java, 2=Python, 3=JavaScript}
Keys: [1, 2, 3]
Values: [Java, Python, JavaScript]
Key/Value mappings: [1=Java, 2=Python, 3=JavaScript]

上記の例では、languages という名前のハッシュマップを作成しました。 .ここでは、キーにアクセスしています 、 、およびキー/値 ハッシュマップからのマッピング。

おすすめの読み物


3.ハッシュマップの値を変更

replace() を使用できます ハッシュマップのキーに関連付けられた値を変更するメソッド。たとえば、

import java.util.HashMap;

class Main {
  public static void main(String[] args) {

    HashMap<Integer, String> languages = new HashMap<>();
    languages.put(1, "Java");
    languages.put(2, "Python");
    languages.put(3, "JavaScript");
    System.out.println("Original HashMap: " + languages);

    // change element with key 2
    languages.replace(2, "C++");
    System.out.println("HashMap using replace(): " + languages);
  }
}

出力

Original HashMap: {1=Java, 2=Python, 3=JavaScript}
HashMap using replace(): {1=Java, 2=C++, 3=JavaScript}

上記の例では、languages という名前のハッシュマップを作成しました。 .表現に注目してください、

languages.replace(2, "C++");

ここでは、キー 2 によって参照される値を変更しています 新しい値 C++ で .

HashMap クラスは replace() のいくつかのバリエーションも提供します 方法。詳細については、

をご覧ください。

4. HashMap 要素を削除

ハッシュマップから要素を削除するには、remove() メソッドを使用できます。たとえば、

import java.util.HashMap;

class Main {
  public static void main(String[] args) {

    HashMap<Integer, String> languages = new HashMap<>();
    languages.put(1, "Java");
    languages.put(2, "Python");
    languages.put(3, "JavaScript");
    System.out.println("HashMap: " + languages);

    // remove element associated with key 2
    String value = languages.remove(2);
    System.out.println("Removed value: " + value);

    System.out.println("Updated HashMap: " + languages);
  }
}

出力

HashMap: {1=Java, 2=Python, 3=JavaScript}
Removed value: Python
Updated HashMap: {1=Java, 3=JavaScript}

ここでは、remove() メソッドはキーを取ります そのパラメーターとして。 を返します キーに関連付けられています エントリを削除します .

特定の条件下でのみエントリを削除することもできます。たとえば、

remove(2, "C++");

ここでは、remove() メソッドは エントリ のみを削除します キー 2 の場合 値 C++ に関連付けられています . 2 以降 C++ には関連付けられていません 、エントリは削除されません。

詳細については、Java HashMap remove() を参照してください。


HashMap のその他のメソッド

メソッド 説明
clear() HashMap からすべてのマッピングを削除します
compute() 指定されたキーの新しい値を計算します
computeIfAbsent() キーのマッピングが存在しない場合、値を計算します
computeIfPresent() キーが存在する場合、マッピングの値を計算します
merge() 指定されたマッピングを HashMap にマージします
clone() HashMap のコピーを作成します
containsKey() 指定されたキーが Hashmap に存在するかどうかを確認します
containsValue() Hashmap かどうかをチェックします 指定された値を含む
サイズ() アイテム数を HashMap で返します
isEmpty() Hashmap かどうかをチェックします 空です

HashMap を反復する

ハッシュマップの各エントリを反復するには、Java for-each ループを使用できます。 キーのみを繰り返し処理できます 、値のみキーと値のマッピング .たとえば、

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

class Main {
  public static void main(String[] args) {

    // create a HashMap
    HashMap<Integer, String> languages = new HashMap<>();
    languages.put(1, "Java");
    languages.put(2, "Python");
    languages.put(3, "JavaScript");
    System.out.println("HashMap: " + languages);

    // iterate through keys only
    System.out.print("Keys: ");
    for (Integer key : languages.keySet()) {
      System.out.print(key);
      System.out.print(", ");
    }

    // iterate through values only
    System.out.print("\nValues: ");
    for (String value : languages.values()) {
      System.out.print(value);
      System.out.print(", ");
    }
    
    // iterate through key/value entries
    System.out.print("\nEntries: ");
    for (Entry<Integer, String> entry : languages.entrySet()) {
      System.out.print(entry);
      System.out.print(", ");
    }
  }
}

出力

HashMap: {1=Java, 2=Python, 3=JavaScript}
Keys: 1, 2, 3,
Values: Java, Python, JavaScript,        
Entries: 1=Java, 2=Python, 3=JavaScript,

Map.Entry を使用していることに注意してください 上記の例では。 Map のネストされたクラスです マップのビュー (要素) を返すインターフェイス。

最初に java.util.Map.Entry をインポートする必要があります このクラスを使用するためのパッケージ。

このネストされたクラスは、マップのビュー (要素) を返します。


他のマップから HashMap を作成する

Java では、他のマップからハッシュマップを作成することもできます。たとえば、

import java.util.HashMap;
import java.util.TreeMap;

class Main {
  public static void main(String[] args) {

    // create a treemap
    TreeMap<String, Integer> evenNumbers = new TreeMap<>();
    evenNumbers.put("Two", 2);
    evenNumbers.put("Four", 4);
    System.out.println("TreeMap: " + evenNumbers);

    // create hashmap from the treemap
    HashMap<String, Integer> numbers = new HashMap<>(evenNumbers);
    numbers.put("Three", 3);
    System.out.println("HashMap: " + numbers);
  }
}

出力

TreeMap: {Four=4, Two=2}
HashMap: {Two=2, Three=3, Four=4}

上記の例では、TreeMap を作成しました。 evenNumbers という名前 .表現に注目してください、

numbers = new HashMap<>(evenNumbers)

ここでは、HashMap を作成しています。 TreeMap を使用した名前付き番号 .ツリーマップの詳細については、Java TreeMap にアクセスしてください。

注意 :ハッシュマップの作成中に、オプションのパラメータを含めることができます:capacity負荷率 .たとえば、

HashMap<K, V> numbers = new HashMap<>(8, 0.6f);

ここで、

オプションのパラメータが使用されていない場合、デフォルトの容量 16 になります デフォルトの負荷係数 0.75 になります .


Java

  1. Java オペレーター
  2. Java コメント
  3. Java if...else ステートメント
  4. Java for-each ループ
  5. Java 文字列
  6. Java インターフェイス
  7. Java匿名クラス
  8. Java try-with-resources
  9. Java アノテーション
  10. Java アサーション
  11. Java ベクトル