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;
}