HashSet は HashMap インスタンスを介して実装されているため、データを HashSet に入れるために使用されるキーは何でしょうか。
リンクhttp://www.coderanch.com/t/251832/Programmer-Certification-SCJP/certification/Difference-HashMap-HashSet ...を調べました...
私は正しく理解していません..誰かがそれをよりよく理解するのを手伝ってくれますか
HashSet は HashMap インスタンスを介して実装されているため、データを HashSet に入れるために使用されるキーは何でしょうか。
リンクhttp://www.coderanch.com/t/251832/Programmer-Certification-SCJP/certification/Difference-HashMap-HashSet ...を調べました...
私は正しく理解していません..誰かがそれをよりよく理解するのを手伝ってくれますか
ソースから:
// 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;
}
マップのキーはセットであるため、キーはハッシュセット自体に入ったオブジェクトになります。
に追加したオブジェクトをHashSet
のキーとして使用するという考え方ですHashMap
。このように、、、add
およびremove
O contains
(1) で実行されます。
はい(ソースコードはこちら)。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!