集合Set

集合.jpg

结合set 底层实现方式是map 算是一次封装使用 既保证数据只能存放单个数据 又使用到了map的特性 hash 链表结构

关键点 把value 作为key 存放到map中 而value值 则存放了一个 空object
// Dummy value to associate with an Object in the backing Map
private static final Object PRESENT = new Object();

那么这么做 就使set 拥有了不同于 map的特性

比如 treemap 可重复 可排序 就变成了 不可重复但是 由于链表形式 可排序

hashSet 与 hashMap 一样都是无序

linkedHashSet 与 linkedHashMap 一样 保证插入顺序 与输出顺序一致

treeSet 和 treeMap 默认 取key的hash值以升序排列数据