HashSet
メンバに HashMap を持っていて、 HashSet#add(o) では HashMap に対して o をキーにこれまたメンバの Object を値として格納しているだけの単純な作りなことにビックリ・・・。
public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable { private transient HashMap<E,Object> map; // Dummy value to associate with an Object in the backing Map private static final Object PRESENT = new Object(); public boolean add(E o) { return map.put(o, PRESENT)==null; }