1

HashSet は HashMap インスタンスを介して実装されているため、データを HashSet に入れるために使用されるキーは何でしょうか。

リンクhttp://www.coderanch.com/t/251832/Programmer-Certification-SCJP/certification/Difference-HashMap-HashSet ...を調べました...

私は正しく理解していません..誰かがそれをよりよく理解するのを手伝ってくれますか

4

4 に答える 4

6

ソースから:

// Dummy value to associate with an Object in the backing Map
private static final Object PRESENT = new Object();


public boolean add(E e) {
    return map.put(e, PRESENT)==null;
}
于 2010-02-12T05:47:23.600 に答える
5

マップのキーはセットであるため、キーはハッシュセット自体に入ったオブジェクトになります。

于 2010-02-12T05:44:04.653 に答える
1

に追加したオブジェクトをHashSetのキーとして使用するという考え方ですHashMap。このように、、、addおよびremoveO contains(1) で実行されます。

于 2010-02-12T05:55:05.910 に答える
0

はい(ソースコードはこちら)。HashSet は本質的に HashMap の keySet へのインターフェースです。

   /**
    * HashSet is an implementation of a Set. All optional operations (adding and
    * removing) are supported. The elements can be any objects.
    */
   public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable,
           Serializable {

       private static final long serialVersionUID = -5024744406713321676L;

       transient HashMap<E, HashSet<E>> backingMap; // right here!
于 2010-09-08T16:04:54.720 に答える