gpt4 book ai didi

java - HashMap 中的哈希冲突

转载 作者:行者123 更新时间:2023-11-30 07:38:04 25 4
gpt4 key购买 nike

据我了解,在 Java 的 HashMap 中,有两种方式会发生哈希冲突,

1.hashCode() for Key Object produces same hash value as already produced one ( even if hash bucket is not full yet )

2.Hash Bucket is already full so new Entry has to go at existing index.

在 Java 的 HashMap 中,由于允许的条目数量过多且自动调整大小,情况 #2 确实很少见(参见 My other question )

我的理解正确吗?

但是出于理论知识的考虑,程序员或 JVM 是否会做任何事情或可以做任何事情来避免场景#2?或

允许哈希桶具有尽可能大的大小然后不断调整大小是唯一的策略吗? (正如在 HashMap 的情况下所做的那样)。

我想,作为一名程序员,我应该只专注于编写一个好的 hasCode() 而不必担心场景#2(因为这已经由 API 处理了)。

最佳答案

我认为 #2 是 #1 的特例,它实际上是一样的,就像当 HashMap 决定将新元素放在哪里时,它决定不是因为其他所有内容都已满,而是因为 hashCode 与一个相同 map 中已有的元素。

我同意,你应该关注hasCode(),参见:Creating a hashCode() Method - Java

关于java - HashMap 中的哈希冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35082909/

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