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