配列の次に重要なデータ構造です。ハッシュテーブルは、キーと値の組み合わせを保管するためのデータ構造で、キーを用いて直接値にアクセスすることができます。ハッシュ関数を用いて、キーを特定のバケット(格納領域)に割り当て、そのバケットに値を格納します。これにより、大量のデータを迅速に検索したり、格納したりすることが可能になります。
特徴
- ハッシュ関数: ハッシュ関数は、入力としてキーを受け取り、ハッシュ値ここでは配列のインデックス(またはバケット)を生成します。この関数は全てのキーに対して一意のインデックスを生成することが理想的ですが、実際には異なるキーが同じインデックスにハッシュされる場合(ハッシュ衝突)があります。ハッシュ関数には様々実装がありますが、最もシンプルなものは配列(バケット)のサイズで余り(mod)を取る手法です。
- バケット: バケットは、キーと値のペアを格納するための領域です。ハッシュ関数によって生成されたインデックスを使って、特定のバケットにアクセスすることができます。
- 衝突解決策: 2つ以上のキーが同じインデックスにハッシュされる場合、ハッシュ衝突が発生します。ハッシュ衝突を解決するために、チェイン法 - Separate Chaining(同じインデックスに対応する要素を連結リストでつなげる)やオープンアドレス法 - Open Addressing(別のバケットに要素を格納する)などの方法があります。