[Rust]HashMap(ハッシュマップ)をループするには?

Rust

どうも、ちょげ(@chogetarou)です。

HashMap(ハッシュマップ)をループする方法を紹介します。

スポンサーリンク

方法

インターフェース, インターネット, プログラム, ブラウザ, Www

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() { ループ処理 }

コメント

タイトルとURLをコピーしました