有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java为什么我们需要LinkedHashMap中的hashcode和bucket

最近,我在java中讨论了Map接口的实现。我明白了HashMap,一切都有道理。 但是说到LinkedHashMap,据我目前所知,条目有keyvaluebeforeafter。其中,before和after跟踪插入顺序

然而,在LinkedHashMaps中使用hashcode和bucket概念对我来说没有意义

I went through this article for understanding implementation of linkedHashMaps

有人能解释一下吗?我的意思是为什么我们把入口节点放在哪个桶里很重要。事实上,为什么水桶的概念放在首位。?为什么不简单地列出两份清单呢


共 (1) 个答案

  1. # 1 楼答案

    LinkedHashMap仍然是HashMap的一种类型。它使用与HashMap相同的逻辑来查找密钥所属的bucket(在get()put()containsKey()等方法中使用)。hashCode()用于定位该存储桶。这种逻辑对于这些操作的预期性能至关重要

    添加的LinkedHashMap(使用beforeafter引用)功能仅用于根据插入顺序迭代条目,因此它会影响keySet()entrySet()返回的Collection的迭代器values()方法。它不影响条目的存储位置

    如果没有hashcode和bucket,LinkedHashMap将无法在O(1)的预期时间内Map查找键