オープンアドレス指定の場合、どのようにプローブシーケンスが生成されますか。 plsはリンクを与えますC#のHashtable型は、連鎖またはオープンアドレッシングを使用して実装されていますか?
4
A
答えて
4
これは、プローブアドレスシーケンスを生成するためにダブルハッシュでオープンアドレシング(または "閉鎖ハッシュ"と言いました)を使用します。 GetHashCode()は最初のプローブインデックスを決定します。間隔はGHC()の関数でもあります。
例えば、System.Collections.Hashtable.Add()のソースコードを参照すると、これを見ることができます。 [http://referencesource.microsoft.com/]
ハッピーハッキング!
1
.netフレームワークのHashtableは、オープンアドレッシングまたはダブルハッシング技術を使用していますが、ディクショナリは衝突回避技術としてチェイニングを使用しています。
関連する問題
- 1. Sybase ASEで連鎖されていないトランザクション内で連鎖トランザクションを実装できますか?
- 2. マルコフ連鎖。実装は、私は、実装の次なステートメントを有するビット混乱しています方法
- 3. HashTable実装を使用したHashMapの実装
- 4. .NET Reactiveを使用して連鎖を連鎖させる
- 5. C++を使用してfastcgiを実装していますか?
- 6. JavaアルゴリズムはCまたはjavaで実装されていますか?
- 7. JavaがArrayListクラスを使用してHashtable/HashMapクラスを実装していないのはなぜですか?
- 8. 関数型プログラミングとマルコフ連鎖は何とか関係していますか?
- 9. Java HashTable実装のgetメソッドはnullを返しますか?
- 10. mavenは連鎖したコマンドを実行しますか
- 11. 抽象クラスはC#で実装されていますか?
- 12. C#では、イベントを使用して既に実装されているオブザーバパターンではありませんか?
- 13. メソッドまたは操作は実装されていません。 C#の
- 14. なぜこのシングルトン実装はプライベートクラス(C++)を使用していますか?
- 15. レール:Paypalを使用してマーケットプレイスを取引する(並行または連鎖)
- 16. Spring WebFlowは実装されたバリデータを使用していません
- 17. Symfony2 ACLはサービスとして実装されていますか?
- 18. CまたはC++でクローン可能なオブジェクトプールを実装していますか?
- 19. hashmapは内部でリンクリストまたは配列を使用してjavaで実装されています
- 20. 関連していないC#クラスの型制約を実装する
- 21. 基数ソートはC++で実装されています
- 22. 私の実装は正しく実装されていますか?
- 23. C++は汎用クラスを実装しています
- 24. networkX node_connected_componentは有向型のために実装されていません
- 25. C#は継承された抽象メンバを実装していません
- 26. C++は渡された関数を使用しています
- 27. Objective Cではカテゴリはどのように実装されていますか?
- 28. 基本クラスはINotifyPropertyChangedを実装しています。派生型はPropertyChangedイベントを使用できますか?
- 29. FIFO(またはスタック)はディスクではなくRAM(好ましくはC++)で実装されています
- 30. すべてのプリミティブ型はコピー特性を実装していますか?
ハッシュテーブルまたはディクショナリ? – SLaks
私は連鎖を使用してそれにお金を置くだろう。効果的なオープンアドレッシングは、通常、2つのハッシュ関数を必要としますが、CLR内のオブジェクトは1つを提供することのみを保証できます(GetHashCode())。さらに、公開アドレス指定を使用してハッシュテーブルから削除することは苦労します。関連するスキームはありますが、チェーン化は実際にはそれほど問題ではありません(確かに私が数年前に実行したベンチマークではありません)。 – Rafe