一、底层结构
HashSet的底层是HashMap;CopyOnWriteArraySet的底层是CopyOnWriteArrayList
二、Set的特性:元素唯一,不能重复
public boolean contains(Object o) {
return al.contains(o);//最终调用的是 CopyOnWriteArrayList的indexOf, 对当时的快照表进行逐一对比
}
public boolean add(E e) {
return al.addIfAbsent(e);//如果不存在,则写入
}
三、 CopyOnWriteArraySet 并如果HashSet查找快速,而是从头遍历比较。查找性能比较差。
只是在多线程写入的时候,比HashSet安全(在多线程时,自己必须线程同步)。