たとえば 100 個のバケットの固定サイズのハッシュマップを作成できるようにしたいのですが、100 個を超えるアイテムを保存する必要がある場合は、衝突と上書きが発生するだけです。hashtable クラスには IsFixedSize プロパティがありますが、読み取り専用です。
私はこれについて完全に間違って考えていますか、それとも解決策はありますか?
.NET フレームワークのコレクションでは、多くの微調整ができません。必要に応じて十分に効率的なものを見つけるかもしれませんが。最適化する前に、実行可能なものをいくつか試してください。
独自のものをロールしない場合は、よりきめ細かいコントロールを備えたサードパーティの代替品を見つけることができます。たとえば、可能性のある開始点として、C# および CLI 用の C5 ジェネリック コレクション ライブラリを参照してください。ドキュメントページでさまざまな Hash* クラスを確認してください。
独自のものを作成する場合は、コレクションやリスト、列挙などの標準インターフェイスをいくつか実装して、C#foreach
や言語、.NET の機能で期待どおりに動作するようにする必要があります。
C#/.NET で使用する方法がある場合は、効率的な C++ 実装を使用することもできます。少し手間がかかるかもしれませんが、この種のことを達成する方法についての答えがあります。