This class implements the Set interface, backed by a hash table (actually a HashMap instance). It makes no guarantees as to the iteration order of the set; in particular, it does not guarantee that the order will remain constant over time. This class permits the null element.
    译文:这个类实现了Set接口,它由一个哈希表(实际上是一个HashMap实例)支持。它不能保证集合的迭代顺序;特别是,它不能保证顺序随时间保持不变。这个类允许空元素。


    HashSet的操作由内部的HashMap实现

    1. //添加方法
    2. private static final Object PRESENT = new Object();
    3. public boolean add(E e) {
    4. return map.put(e, PRESENT)==null;
    5. }

    HashSet - 图1所有元素的value都指向Object对象,HashSet虽然底层是用HashMap来实现的,但由于用不到HashMap的value,所以不会为底层HashMap的每个value分配一个内存空间,因此并不会过多的占用内存