6
私はHashMap
に基づいてHashSet
を理解しています。かなり類似しているからです。コードの柔軟性を高め、実装作業を最小限に抑えます。しかし、クラスがnull
要素を禁じるならば、HashSetのEntry
の参照変数は私にとっては不必要なように見えるので、Entry全体は意味を持ちません。この事実にもかかわらず、Entry
は24バイトのメモリ/要素を占めますが、セットの要素を持つ1つの配列は、私の数字が正しい場合は4バイト/要素しか必要としません。 (配列のヘッダーを除いて)Java HashSetのパフォーマンス
私の議論が正しいなら、利点は本当にこのパフォーマンスヒットの過体重ですか?
(私が間違っている場合、私はaswellそれから学ぶでしょう)
単一の配列はHashSetではありません。あなたは単純な配列を持つO(1)contains()をどのように持っていますか? –
@ JBNizet線形プロービング(または一般にオープンアドレッシング)は、ただ1つの配列で動作します。私はまた、デザインの決定は何か不思議ですが、ここで報告する著者が見つかったのかどうかはわかりません: –
@JBNizet配列にはいくつかのタイプのハッシュテーブルを簡単に実装できます。 ...編集:リニアにはO(1)contains()が含まれていませんが、鳩は –