gpt4 book ai didi

java - java HashMap 内部是如何工作的?

转载 作者:行者123 更新时间:2023-12-01 18:03:11 25 4
gpt4 key购买 nike

我在 this 上看到了以下段落页面:

Prior to Java 8, HashMap and all other hash table based Map implementation classes in Java handle collision by chaining, i.e. they use linked list to store map entries which ended in the same bucket due to a collision. If a key end up in same bucket location where an entry is already stored then this entry is just added at the head of the linked list there. In the worst case this degrades the performance of the get() method of HashMap to O(n) from O(1). In order to address this issue in the case of frequent HashMap collisions, Java8 has started using a balanced tree instead of linked list for storing collided entries. This also means that in the worst case you will get a performance boost from O(n) to O(log n).

听起来很有趣,但是我在猜测这个信息的来源是什么?我知道Oracle官方教程可以找到here 。但我认为它们并没有那么深入。偶HashMap api docs不解释一样。您能给我指出任何官方 Oracle 文档/教程来解释这一点以及此类深入的事实吗?或者这个信息的来源是开源代码?

最佳答案

HashMap 的工作原理是散列,我们有 put(key, value) 和 get(key) 方法用于从 HashMap 中存储和检索对象。当我们将 Key 和 Value 对象传递给 Java HashMap 上的 put() 方法时,HashMap 实现会调用 Key 对象上的 hashCode 方法,并将返回的 hashcode 应用于自己的哈希函数中,以找到存储 Entry 对象的存储桶位置,需要注意的是,HashMap在 Java 中,键和值对象都作为 Map.Entry 存储在存储桶中,这对于理解检索逻辑至关重要。

关于java - java HashMap 内部是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60598810/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com