私は面接の準備をしていて、この質問に出くわしました:
1000,000 の単語があり、辞書を作成したいとします。使用できるデータ構造は Map または B+ trees です。しかし、取得が高速になるように、どの基準で hashcode() を記述すればよいでしょうか。
皆様のご意見を歓迎いたします...
私はどちらも使用せず、代わりに辞書をPatriciaトライとして保存します。
また、すべての文字列のすべての共通プレフィックスを個別に保存するわけではないため、使用するメモリも少なくなります。
「昔」 (1980 年代) には、B* (または B*+) ツリーを使用する傾向があり、ディスクをヒットすることに非常にうるさかったのですが、現在では 1,000,000 個のキーはメモリに収まらないため、dict に貼り付けてください。それで終わりました。
面接担当者に次のことを伝えてください。開発者のコストに比べて、メモリはほとんど無料です。これを賢くしようと費やした時間は、何を考え出しても効率が回復することはありません。それが本当である理由を彼らが理解していない場合は、... ええと。