所有Set几乎都是内部用一个Map来实现, 因为Map里的KeySet就是一个Set,而value采用假值,全部使用同一个Object即可。
HashSet
构造方法
HashSet底层就是典型的用HashMap来实现的,构造方法如下:
add
|
|
remove
|
|
iterator
|
|
CopyOnWriteArraySet
CopyOnWriteArraySet则以CopyOnWriteArrayList作为底层数据结构,构造方法如下。
构造方法
|
|
add
|
|
最终调用CopyOnWriteArrayList的addIfAbsent方法,代码如下:
至于remove方法,跟CopyOnWriteArrayList中的remove方法一样,可以参看之前的文章。由以上可以看出CopyOnWriteArrayList对于经常写的操作效率并不高。