HashSet

1.1 特性

  • 内部是使用hashMap的,存储值再hashMap的key,value是一个静态的object
  • 非线程安全的
  • 无序的

    1.2 属性

    1. //内部使用的map
    2. private transient HashMap<E,Object> map;
    3. // Dummy value to associate with an Object in the backing Map
    4. private static final Object PRESENT = new Object();

    1.3 重要方法

    1. public boolean add(E e) {
    2. return map.put(e, PRESENT)==null;
    3. }

    TreeSet

    2.1 特性

  • 内部是排序的,使用红黑树,默认从小到大

  • 内部使用的是NavigableMap
  • 同样是非同步的

    2.2 属性

    ```java /**

    • The backing map. */ private transient NavigableMap m;

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

  1. <a name="SSI5Z"></a>
  2. ## 2.3 重要方法
  3. ```java
  4. public boolean add(E e) {
  5. return m.put(e, PRESENT)==null;
  6. }

LinkedHashSet

3.1 特性

  • 有序的,继承HashSet,本质是由父类保证的有序性
  • 调用父类的HashSet(int initialCapacity, float loadFactor, boolean dummy) ,指定map使用linkedHashMap