【はっしゅてーぶる】
ハッシュテーブル とは?
💡 「棚番号を計算して一発で取り出す」超高速な引き出しシステム
📌 このページのポイント
- ハッシュ関数でキーを数値に変換してインデックスを決める
- 検索・追加・削除が平均O(1)と非常に速い
- PythonのdictやJavaScriptのオブジェクト・Mapが代表的な実装
- 異なるキーが同じ場所に当たる「衝突(コリジョン)」の対処が重要
ハッシュテーブルって何が速いの?
「田中」という名前を探すとき、普通の方法は全員のリストを先頭から確認する。ハッシュテーブルは「田中」という文字を計算して「この棚の番号」を一発で出し、その棚に直接取りに行く。だから1件でも100万件でも検索時間がほぼ変わらないんだ。
おもしろい!Pythonのdictもハッシュテーブルなの?
そうだよ。Pythonのdictはハッシュテーブルで実装されているから「dict['key']」で値を取り出すのがO(1)で速い。JavaScriptのオブジェクトやMapも同様。日常的に使っているデータ構造がハッシュテーブルだったりするんだ。
衝突って何?どうなるの?
異なるキーを計算したら同じ棚番号になってしまうことを衝突(コリジョン)という。棚が一つしかないのに二つのものを入れようとする問題だよ。「チェイニング(リストで繋ぐ)」や「オープンアドレス法(別の空き棚を探す)」で解決する。衝突が多くなると速度が落ちるから、ハッシュ関数の設計が重要なんだ。
ハッシュテーブルの弱点って何?
ハッシュテーブルの攻撃ってあるの?
まとめ:ざっくりこれだけ覚えればOK!
「ハッシュテーブル」って出てきたら「キーから保存場所を即計算して超高速に検索できるデータ構造」と思えばだいたいOK!
📖 おまけ:英語の意味
「Hash Table」 = ハッシュ(細切れにした)表
💬 「Hash(細切れにする)」はもともと料理用語で、キーを細かく変換して番号にする様子から命名。「ハッシュドポテト」のハッシュと同じ単語だよ