为什么Java 8中的哈希映射使用二叉树而不是链表?[已关闭]
我最近了解到,在Java中,8哈希映射使用二叉树而不是链表,哈希代码被用作分支因子。我理解,在发生高冲突的情况下,通过使用二叉树,查找从O(n)减少到O(log n)。我的问题是,它到底有什么用,因为摊销的时间复杂度仍然是O(1),也许如果你通过为所有键提供相同的哈希代码来强制将所有条目存储在同一个桶中,我们可以看到一个显着的时间差,但没有人会这样做。
二叉树也比单链表使用更多的空间,因为它存储左节点和右节点。当时间复杂度绝对没有改善时,除了一些虚假的测试用例外,为什么要增加空间复杂度。