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安全(在多線程時,本身必須線程同步)。線程