ハッシュテーブル(またはハッシュテーブル上に構築された他のデータ構造)がいっぱいになっていることに気付いた場合、どの時点でより多くのバケットを使用して新しいテーブルを構築する必要があります。そして、これまでのところテーブルにn個のアイテムがあるとすると、新しいバケットで使用するバケットの数をどのように把握しますか?
それで、私が100個のバケツを持っているとしましょう。アイテムが50個ある場合、再編成する必要がありますか?500?5000?それとも、その上で最もいっぱいのバケツとキーを探す必要がありますか?次に、そのポイントに達したときに、新しいハッシュテーブルをどのくらいの大きさにしますか?
これに関連して、いくつのアイテムが入るかを事前に知っている場合、良好な平均パフォーマンスを得るためにバケットの数を計算する方法はありますか?
本当の答えは、特定の例で速度とサイズがどれほど重要かなど、他の多くの考慮事項に依存することを私は知っていますが、私は一般的なギルドラインを探しています。
また、適切なプロファイリングでこれがボトルネックであることが示されない限り、この種のことを最適化するべきではないことも知っています。たくさんのハッシュテーブルを使うプロジェクトを考えているだけで、どうやってこれに取り組むのか疑問に思いました。