在java8jdk中放入/获取HashMap复杂性



据我所知,用java实现的HashMap中的put/get操作的最坏情况是o(n)。

在为我正在进行的一个项目研究有效的数据结构时,我看到一个人的评论,他说在java8JDK中,这些操作的HashMap复杂性是O(logn),但我找不到有关它的文档。那是真的吗,所以我可以相信它?

如果这真的是事实,它是如何实现的?我的猜测是,HashMap中的每个"单元"都实现为一个平衡树。

这是正确的。在Java 8中,如果一个哈希桶包含8个或更多对象,那么该位置的链表将转换为树(红黑平衡树)。

这里有一篇关于它的文章。OpenJDK JEP就在这里。

有趣的是。。。。该CCD_ 1依赖于已经实现了CCD_。所以从技术上讲,你是正确的,只要你只在地图中放了comparable对象。如果您不这样做,那么它将返回到普通的旧链表和O(n)

最新更新