JavaのMapを反復処理する方法
Java の Map インターフェイスを反復処理する方法がいくつかあります。
- entrySetで全件走査:entrySet()メソッドでMap.Entryオブジェクトの集合を取得し、イテレータやforeachループで集合を走査し、Map.EntryオブジェクトのgetKey()、getValue()メソッドでキーと値を取得する。
Map<K, V> map = new HashMap<>();
// 添加键值对
Set<Map.Entry<K, V>> entrySet = map.entrySet();
for (Map.Entry<K, V> entry : entrySet) {
K key = entry.getKey();
V value = entry.getValue();
// 处理键值对的逻辑
}
- KeySetを使ってイテレートする: MapのkeySet()メソッドを使ってキーのセットを取得し、イテレータまたはforeachループを使ってセットをイテレートし、キーから対応する値を取得する。
Map<K, V> map = new HashMap<>();
// 添加键值对
Set<K> keySet = map.keySet();
for (K key : keySet) {
V value = map.get(key);
// 处理键值对的逻辑
}
- Valuesを利用して反復処理する: Mapのvalues()メソッドで値のコレクションを取得し、反復子またはforeachループでコレクションを反復処理します。
Map<K, V> map = new HashMap<>();
// 添加键值对
Collection<V> values = map.values();
for (V value : values) {
// 处理值的逻辑
}
- MapのforEachメソッドとラムダ式を使用して、キーペアの反復処理を行います(JDK 8以降)。
Map<K, V> map = new HashMap<>();
// 添加键值对
map.forEach((key, value) -> {
// 处理键值对的逻辑
});
EntrySet 遍历はコレクションを 1 回しかスキャンしないため、他の 2 つの方法よりも効率的です。KeySet または Values を使用すると、コレクションを 2 回スキャンする必要があることに注意してください。また、ラムダ式による反復処理は JDK 8 以降でのみ使用できます。