ハッシュ
連想配列、マップ、ハッシュ、ハッシュテーブル、ハッシュマップ、などなど配列とリストの時と同じく理解が完全ではなさそうなので、アタマの整理。

- 作者: 紀平拓男,春日伸弥
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2011/03/30
- メディア: 単行本
- 購入: 13人 クリック: 228回
- この商品を含むブログ (16件) を見る
マップ
以下の条件を満たすデータ構造
- 検索キーを元に対応する値を取得可能
- データの追加と削除が高速
- データの検索も高速
マップの実装にはツリーマップとハッシュマップの2通りある。
ハッシュマップ
マップの高速な実装。検索キーに対応する数値(※1)を適当に決め(※2)、あらかじめ確保しておいた配列Array(※3)の対応要素(例: ハッシュ値が10ならArray[10])にkey/value構造体へのポインタを格納する。
ハッシュ値の衝突への対応
ハッシュ表サイズをなるべく大きな素数にするなど、衝突を避ける工夫はあるがそれでも衝突は理論上必ず起こるので対策が必要。
チェーン法
衝突した同じハッシュ値を持つ要素(key/value)をリストで連結する。リストが長くなるとリニアサーチになるので、検索に時間が掛かってしまう。
再ハッシュ法
衝突したら別の位置に要素を格納する。
まとめ
マップ/ハッシュについて、ざっとアタマの中を整理してみた。
理解が正しくない点もあると思うので指摘歓迎。