为什么 ConcurrentHashMap 元素也可以是树
Why can ConcurrentHashMap elements also be trees
我看到 ConcurrentHashMap 将其(键,值)对存储在 a list of Node
. However, a Node
can also be organised 中作为 TreeBin
。
因此,ConcurrentHashMap 的底层数据结构是一个列表,其中包含独立元素或树元素。
为什么数据结构不是列表或树?
这个更复杂的实现有什么用?
二叉树结构允许按元素的自然顺序或哈希码轻松对元素进行排序(如果项目不具有其他可比性)。对于相当大的哈希桶,这允许快速检索元素。
然而,在较小的哈希桶中,维护这棵树的成本远远大于搜索树结构所节省的成本。在这种情况下,平均而言,列表会更有效率。
我看到 ConcurrentHashMap 将其(键,值)对存储在 a list of Node
. However, a Node
can also be organised 中作为 TreeBin
。
因此,ConcurrentHashMap 的底层数据结构是一个列表,其中包含独立元素或树元素。
为什么数据结构不是列表或树?
这个更复杂的实现有什么用?
二叉树结构允许按元素的自然顺序或哈希码轻松对元素进行排序(如果项目不具有其他可比性)。对于相当大的哈希桶,这允许快速检索元素。
然而,在较小的哈希桶中,维护这棵树的成本远远大于搜索树结构所节省的成本。在这种情况下,平均而言,列表会更有效率。