どうも、ちょげ(@chogetarou)です。
HashMap(ハッシュマップ)をループする方法を紹介します。
方法

HashMap(ハッシュマップ)をループする方法は、3つあります。
値(value)のみをループ
1つ目は、値のみをループする方法です。
まず、for文のループ対象(inの右)に、HashMapから呼び出したvalues()の結果を指定します。
そして、for文のループ処理を記述します。
ループ処理では、ループ変数でHashMapの値を取得します。
//map=対象のハッシュマップ
for value in map.values() {
//ループ処理
//ループ変数「value」で値を取得
}
上記のforループは、対象のHashMap(ハッシュマップ)の値(value)をループします。
使用例
use std::collections::HashMap;
fn main(){
let mut nums = HashMap::new();
nums.insert("one", 1);
nums.insert("two", 2);
nums.insert("three", 3);
nums.insert("four", 4);
nums.insert("five", 5);
for value in nums.values() {
println!("{:?}", value);
}
}
出力:
4
5
1
2
3
キー(key)のみをループ
2つ目は、キーのみをループする方法です。
まず、for文のループ対象(inの右)に、HashMapから呼び出したkeys()の結果を指定します。
そして、for文のループ処理を記述します。
ループ処理では、ループ変数でHashMapのキーを取得します。
//map=対象のハッシュマップ
for key in map.keys() {
//ループ処理
//ループ変数「key」でキーを取得
}
上記のforループは、対象のHashMap(ハッシュマップ)のキー(key)をループします。
使用例
use std::collections::HashMap;
fn main(){
let mut nums = HashMap::new();
nums.insert("one", 1);
nums.insert("two", 2);
nums.insert("three", 3);
nums.insert("four", 4);
nums.insert("five", 5);
for key in nums.keys() {
println!("{:?}", key);
}
}
出力:
"two"
"one"
"three"
"four"
"five"
キーと値を一緒にループ
3つ目は、キーと値を一緒にループする方法です。
まず、for文のループ変数を()内に2つカンマ区切りで指定します。
次に、for文のループ対象(inの右)に、先頭に「&」を付けたHashMap、もしくはHashMapから呼び出したiter()を指定します。
そして、for文のループ処理を記述します。
ループ処理では、左のループ変数でインデックス、右のループ変数で要素を取得します。
//map=対象のハッシュマップ
for (key, value) in &map {
//ループ処理
//ループ変数「key」でキー、ループ変数「value」で値を取得
}
for (key, value) in nums.iter() {
//ループ処理
}
上記のforループは、対象のHashMap(ハッシュマップ)のキー(key)と値(value)をループします。
使用例
use std::collections::HashMap;
fn main(){
let mut nums = HashMap::new();
nums.insert("one", 1);
nums.insert("two", 2);
nums.insert("three", 3);
nums.insert("four", 4);
nums.insert("five", 5);
for (key, value) in &nums {
println!("{:?}: {:?}", key, value);
}
}
出力:
"four": 4
"one": 1
"five": 5
"three": 3
"two": 2
まとめ
HashMap(ハッシュマップ)をループする方法は、次の3つです。
- 値のみをループする方法
for value in map.values() { ループ処理 }
- キーのみをループする方法
for key in map.keys() { ループ処理}
- キーと要素を一緒にループする方法
for (key, value) in &map { ループ処理 }
for (key, value) in nums.iter() { ループ処理 }
コメント