サンプルコードで身につける: HashMap<K, V> — キーと値のペア
解説で学んだ概念を、5つの具体例で確認します。素朴な例から実務寄りの例へと進みます。
1登録して、キーで引く
use で HashMap を持ち込み、insert で登録して ["キー"] で値を引くという基本の流れの最小例です。Vec が「番号で引く」のに対し、HashMap は「名前で引く」コレクションだと対比すると掴みやすいです。len() で登録件数も確認できます。
2上書きと contains_key
同じキーで insert すると値が上書きされること、存在しないキーを [] で引くと停止してしまうため contains_key で先に確認できることを示す例です。「あれば表示、なければ未登録と出す」という安全な読み方の基本形になります。キーの有無の扱いは、後で学ぶ Option でさらに洗練されます。
3entry で出現回数を数える
entry(キー).or_insert(0) は「キーがなければ 0 で登録し、その値への可変参照を返す」ので、先頭に * を付けて += 1 すれば集計が1行で書けます。キーの有無で処理を分ける必要がなく、HashMap でもっとも使われるイディオムの1つです。投票集計・単語カウント・アクセス集計など応用範囲は広大です。
4対応表を引きながら計算する
メニュー名から価格を引く「対応表」として HashMap を使い、注文リストを回しながら合計を計算する例です。条件分岐の連打や定数の羅列で書くより、データ(表)とロジック(ループ)が分離されて見通しがよくなります。料金表・設定値・換算表など、実務の「マスタデータ」はこの形で持ちます。
5在庫の増減を entry で管理する
販売で減らし、入荷で増やすという「読み取り+書き換え」を entry 経由で行う実務寄りの例です。or_insert(0) を挟むことで、未登録の商品が混ざっても安全に増減できます。在庫・ポイント残高・利用回数のような「キーごとのカウンタ更新」は、この書き方がそのまま現場のコードになります。