为什么 ConcurrentHashMap 元素也可以是树

Why can ConcurrentHashMap elements also be trees

我看到 ConcurrentHashMap 将其(键,值)对存储在 a list of Node. However, a Node can also be organised 中作为 TreeBin

因此,ConcurrentHashMap 的底层数据结构是一个列表,其中包含独立元素或树元素。

为什么数据结构不是列表或树?

这个更复杂的实现有什么用?

二叉树结构允许按元素的自然顺序或哈希码轻松对元素进行排序(如果项目不具有其他可比性)。对于相当大的哈希桶,这允许快速检索元素。

然而,在较小的哈希桶中,维护这棵树的成本远远大于搜索树结构所节省的成本。在这种情况下,平均而言,列表会更有效率。