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()
の値として メソッド。
おすすめの読み物
- Java HashMap put()
- Java HashMap putAll()
- Java HashMap putIfAbsent()
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 という名前のハッシュマップを作成しました。 .ここでは、キーにアクセスしています 、値 、およびキー/値 ハッシュマップからのマッピング。
おすすめの読み物
- Java HashMap get()
- Java ハッシュマップ getOrDefault()
- Java HashMap keySet()
- Java HashMap 値()
- Java HashMap entrySet()
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()
のいくつかのバリエーションも提供します 方法。詳細については、
- Java HashMap replace()
- Java HashMap replaceAll()
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);
ここで、
- 8 (容量は 8) - これは、8 つのエントリを保存できることを意味します。
- 0.6f (負荷係数は 0.6) - これは、ハッシュ テーブルが 60% 埋まるたびに、元のハッシュ テーブルの 2 倍のサイズの新しいハッシュ テーブルにエントリが移動されることを意味します。
オプションのパラメータが使用されていない場合、デフォルトの容量 16 になります デフォルトの負荷係数 0.75 になります .
Java