Rust のHashMap
1. HashMap (ハッシュマップ)
HashMap(ハッシュマップ)は、キーとバリュー(値)のペアを管理するコレクションです。
値を保存し、それを特定のキーで検索したい場合に非常に優れたパフォーマンスを発揮します。
HashMapを使用するには、Rustのスタンダードライブラリ(Standard Library)からインポートする必要があります。
use std::collections::HashMap;2. HashMapの作成
新しい空のHashMapを作成し、そこにアイテムを追加することができます。
サンプルコード
// HashMapをインポート
use std::collections::HashMap;
fn main() {
// capitalCitiesという名前のHashMapを作成
let mut capitalCities = HashMap::new();
// キーとバリューを追加 (国, 都市)
capitalCities.insert("England", "London");
capitalCities.insert("Germany", "Berlin");
capitalCities.insert("Norway", "Oslo");
println!("{:?}", capitalCities);
}3. 値へのアクセス
HashMap内のバリューにキーを使ってアクセスするには、.get() メソッドを使用します。
サンプルコード
let mut capitalCities = HashMap::new();
capitalCities.insert("England", "London");
capitalCities.insert("Germany", "Berlin");
capitalCities.insert("Norway", "Oslo");
// .get()はOption型を返すため、if letなどで安全に値を取り出します
if let Some(city) = capitalCities.get("England") {
println!("イングランドの首都は{}です。", city);
} else {
println!("イングランドはマップ内に存在しません。");
}4. 値の更新
すでに存在するキーを使用して新しいバリューを insert した場合、古いバリューは新しいものに上書き(Overwrite)されます。
サンプルコード
let mut capitalCities = HashMap::new();
capitalCities.insert("England", "London");
capitalCities.insert("England", "Berlin"); // "London"が"Berlin"に上書きされます
println!("{:?}", capitalCities);5. 値の削除
HashMapから特定のキーを削除するには、.remove() メソッドを使用します。
サンプルコード
let mut capitalCities = HashMap::new();
// キーとバリューを追加 (国, 都市)
capitalCities.insert("England", "London");
capitalCities.insert("Germany", "Berlin");
capitalCities.insert("Norway", "Oslo");
// キー "England" を削除
capitalCities.remove("England");
println!("{:?}", capitalCities);6. HashMapのループ処理
for ループを使用することで、すべてのキーとバリューのペアを反復処理できます。
サンプルコード
let mut capitalCities = HashMap::new();
// キーとバリューを追加 (国, 都市)
capitalCities.insert("England", "London");
capitalCities.insert("Germany", "Berlin");
capitalCities.insert("Norway", "Oslo");
// HashMapをループで処理
for (country, city) in &capitalCities {
println!("{}の首都は{}です。", country, city);
}7. HashMapを使用する理由
開発においてHashMapが選ばれる主な理由は以下の通りです:
- データをキー(Key)単位で管理・保存するため
- 特定のバリューを高速に検索(ルックアップ)できるため
- 関連するデータ(例:ユーザー名とスコアなど)をグループ化して扱うため
Note: HashMapのキーはユニーク(一意的)である必要があります。同じキーを再度挿入すると、既存の値は失われ、新しい値で更新されます。