每个人都知道根据哈希表的大小和元素的哈希码值HashSet
将元素存储在桶中。
但是如何CopyOnWriteArraySet
存储元素?我认为它会对这些存储桶进行快照并复制它们。好像没有。它是否将它们一一存储在“正常”数组中并检查equals()
?它甚至使用散列原理吗?
每个人都知道根据哈希表的大小和元素的哈希码值HashSet
将元素存储在桶中。
但是如何CopyOnWriteArraySet
存储元素?我认为它会对这些存储桶进行快照并复制它们。好像没有。它是否将它们一一存储在“正常”数组中并检查equals()
?它甚至使用散列原理吗?
CopyOnWriteArraySet
是一个Set
-wrapper CopyOnWriteArrayList
,它将其元素存储在一个数组中,因此它不使用散列。这就是为什么它没有 HashSet 的 O(1) 查找优势。
文档说它只适用于小型套装。