Rust 速習チュートリアル

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のキーはユニーク(一意的)である必要があります。同じキーを再度挿入すると、既存の値は失われ、新しい値で更新されます。