HashMapは、キーと値のペアで要素を持つデータ構造です。この記事では、HashMapの要素を巡回する方法を紹介します。
1. for 文で HashMap 巡回
for イテレーションステートメントを使用して HashMap の要素を巡回できます。
1.1 HashMap.entrySet() 巡回
HashMap.entrySet()
は Map が持つ要素情報を Set<Map.Entry<K,V>>
の形で返します。
Map.Entry
はキーと値のペアのデータを持っていますが、このSetを巡回するとMapのすべての要素にアクセスできます。
Map.Entry
は以下の2つのメソッドを提供します。
- Entry.getKey() : key-value ペアの要素から key 値を返す
- Entry.getValue() : key-value ペアの要素から value 値を返す
以下の例は、forステートメントでHashMapのすべての EntrySet
を巡回しながらkeyとvalueを出力する例です。
import java.util.HashMap;
import java.util.Map;
public class Example {
public static void main(String[] args) {
Map<String, Integer> myMap = new HashMap<>();
myMap.put("apple", 1);
myMap.put("orange", 2);
myMap.put("kiwi", 3);
for (Map.Entry<String, Integer> entry : myMap.entrySet()) {
System.out.println("key: " + entry.getKey() + ", value: " + entry.getValue());
}
}
}
Output:
key: orange, value: 2
key: apple, value: 1
key: kiwi, value: 3
1.2 HashMap.keySet()、HashMap.values() について
HashMap.keySet()
は HashMap のすべてのキー値を持つ `Setリー HashMap.values()
は HashMap のすべての value 値のみを持つ `Collectionリー
どちらもコレクションなので、for文で巡回できます。
以下の例は、 keySet()
と values()
の Collection を巡回しながら key と value を出力する例です。
import java.util.HashMap;
import java.util.Map;
public class Example2 {
public static void main(String[] args) {
Map<String, Integer> myMap = new HashMap<>();
myMap.put("apple", 1);
myMap.put("orange", 2);
myMap.put("kiwi", 3);
for (String key : myMap.keySet()) {
System.out.println("key: " + key + ", value: " + myMap.get(key));
}
for (Integer value : myMap.values()) {
System.out.println("value: " + value);
}
}
}
Output:
key: orange, value: 2
key: apple, value: 1
key: kiwi, value: 3
value: 2
value: 1
value: 3
2. forEachによるHashMapの巡回
HashMap.forEach()
はMapの要素を巡回し、keyとvalueに簡単にアクセスできます。以下の例のように、Lambdaを引数として渡して処理できます。HashMap.entrySet().forEach()
は Entry を巡回します。 Entryを介してkeyとvalueにアクセスできます
import java.io.*;
import java.util.HashMap;
import java.util.Map;
public class Example1 {
public static void main(String[] args) throws IOException, ClassNotFoundException {
Map<String, Integer> myMap = new HashMap<>();
myMap.put("apple", 1);
myMap.put("orange", 2);
myMap.put("kiwi", 3);
myMap.forEach((k, v) -> {
System.out.println("key: " + k + ", value: " + v);
});
myMap.entrySet().forEach((entry) -> {
System.out.println("key: " + entry.getKey() + ", value: " + entry.getValue());
});
}
}
Output:
key: orange, value: 2
key: apple, value: 1
key: kiwi, value: 3
key: orange, value: 2
key: apple, value: 1
key: kiwi, value: 3
3. Iterator で HashMap 巡回
3.1 エントリのイテレータ
HashMap.entrySet().iterator()
は HashMap の Entry の Iterator を返します。反復文とIteratorを使用してEntry要素を巡回し、Entryを介してkeyとvalueにアクセスできます。
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class Example3 {
public static void main(String[] args) {
Map<String, Integer> myMap = new HashMap<>();
myMap.put("apple", 1);
myMap.put("orange", 2);
myMap.put("kiwi", 3);
Iterator<Map.Entry<String, Integer>> entry =
myMap.entrySet().iterator();
while (entry.hasNext()) {
Map.Entry<String, Integer> element = entry.next();
System.out.println("key: " + element.getKey() + ", value: " + element.getValue());
}
}
}
Output:
key: orange, value: 2
key: apple, value: 1
key: kiwi, value: 3
3.2 キー、値イテレータ
HashMap.keySet().iterator()
, HashMap.values().iterator()
は key と value の Iterator を返します。
以下のようにIteratorを巡回しながら、keyとvalueにアクセスできます。
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
public class Example4 {
public static void main(String[] args) {
Map<String, Integer> myMap = new HashMap<>();
myMap.put("apple", 1);
myMap.put("orange", 2);
myMap.put("kiwi", 3);
Iterator<String> it = myMap.keySet().iterator();
while (it.hasNext()) {
String key = it.next();
System.out.println("key: " + key);
}
Iterator<Integer> it2 = myMap.values().iterator();
while (it2.hasNext()) {
Integer value = it2.next();
System.out.println("value: " + value);
}
}
}
Output:
key: orange
key: apple
key: kiwi
value: 2
value: 1
value: 3
Related Posts
- Java - AtomicReference使用方法
- Java - CountDownLatchを使用する方法、および例
- Java - ScheduledThreadPoolExecutor使用方法
- Java - SummaryStatisticsの使用方法(count、min、max、average)
- Java8 - 関数型インタフェース (Functional Interface) について
- Java - String配列をint配列に変換する
- Java - ArrayList要素の値を変更する方法、replaceAll()
- Java - 2つのリストが同じかどうかを比較
- Java - 配列から特定のIndex要素を削除する3つの方法
- Java - HashMapソート、4つの方法
- Java - 文字列を配列に変換する方法
- Java - ArrayListが空であることを確認する3つの方法
- Java - ArrayListの巡回、4つの方法
- Java - ArrayListの最大値、最小 値を見つける
- Java - ArrayListの合計、平均値の計算
- Java - HashMap巡回、3つの方法
- Java - do whileとwhileの違い
- Java - Lambda式と関数型インタフェース
- Java - List empty(null)チェック、3つの方法
- Java - ArrayListの初期化、4つの方法
- Java - Stream.reduce()の使い方と例
- Java - 2つのマップを結合する(merge、putAll)
- Java - java.util.Dateをjava.sql.Dateに変換する
- Java - ArrayListをStringに変換する
- Java - ClassNotFoundExceptionの発生原因と解決策
- Java - 非静的メソッドは静的コンテキストから参照できません
- Java - NoSuchMethodErrorの原因と解決策
- Java - JSONライブラリを使用する方法(JSONObject、JSONArray)
- Java - byte[]配列をFileに保存
- Java - byte[]の配列をStringに変換
- Java - ファイルのアクセス権を確認し、変更
- Java - 一時フォルダ(Temp directory)パスを取得する
- Javaでシェルスクリプトを実行
- Java - Streamを配列に変換する
- Java - リスト重複排除、2つの方法