HashMap
がHashSet
より速い理由を読んだり調べたりしています。なぜHashMapはHashSetより速いのですか?
私は非常に次の文を理解していないです:値は一意のキーに関連付けられているため
HashMap
はHashSet
よりも高速です。HashSet
では、メンバオブジェクトは2つのオブジェクトで同じであるハッシュコード値を計算するために使用されるため、equals()
メソッドが等しいかどうかをチェックするために使用されます。false
が返された場合は、2つのオブジェクトが異なることを意味します。HashMap
では、キーオブジェクトを使用してハッシュコード値が計算されます。HashMap
ハッシュコード値は、キーオブジェクトを使用して計算されます。ここでは、メンバーオブジェクトを使用してハッシュコードを計算します。ハッシュコードは2つのオブジェクトで同じにすることができるため、equals()
メソッドを使用して等価性をチェックします。false
が返された場合は、2つのオブジェクトが異なることを意味します。
私の質問締結する:
を私は
HashMap
とHashSet
が同じようにハッシュコードを計算すると思いました。彼らはなぜ異なっているのですか?HashSet
とHashMap
でハッシュコードの計算方法が異なる具体的な例を教えてください。「キーオブジェクト」は何かを知っていますが、「メンバーオブジェクト」はどういう意味ですか?
HashMap
と同じものをHashSet
と同じように実行できます。なぜHashSet
が必要なのですか?例:HashMap <Object1, Boolean>= new HashMap<Object1, boolean>(); map.put("obj1",true); => exist map.get("obj1"); =>if null = not exist, else exist
'Map'と' Set'の違いについてお読みください。それらは2つの異なるタイプの 'Collection'です。これをやったら、マップから特定のオブジェクトを取得するほうが、セットよりも速いのはなぜかは明らかです。 – Magnilex
ハッシュセットはHashMap上に構築されています。セットは一意性のために使用されます。キーバリューペアコレクションではありません。 –
はい。私は彼らが異なるインターフェイスを実装知っている。しかし、ハッシュセットはバックエンドでハッシュマップを使用していると言う人もいます。それが真実ならば、ハッシュマップはハッシュマップより遅くなるのはなぜですか? – runcode