HashSet

HashSet和ArrayList一样,底层原理一样,也是线程不安全
CopyOnWriteArraySet底层还是用的CopyOnWriteArrayList
new HashSet()的底层数据是什么?

HashSet的底层数据结构就是HashMap;初始容量16

 /**
 * Constructs a new, empty set; the backing <tt>HashMap</tt> instance has
 * default initial capacity (16) and load factor (0.75).
 */
public HashSet() {
    map = new HashMap<>();
}

那 new HashSet().add("a"); 为什么add的不是K-V键值对?

HashSet add就是HashMap put的key,value是一个无意义的常量

private static final Object PRESENT = new Object();
public boolean add(E e) {
    return map.put(e, PRESENT)==null;
}

 

posted @ 2019-09-03 12:23  要好好吃饭  阅读(134)  评论(0编辑  收藏  举报