两个键是相同的hashMap过写“现有的?

时间:2010-12-17 07:29:19

标签: java collections hashmap

内部如何准确地存储数据...我知道它会计算密钥的HashCode值并存储它。如果两个密钥具有相同的哈希码,它将放入相同的桶中。但是为什么如果“两个键是相同的hashMap over write”现有的呢?

5 个答案:

答案 0 :(得分:9)

嗯,这就是它的目的。它是键/值对的映射,其中任何键与0或1值相关联。如果put为密钥的第二个值,则该密钥的条目将被替换。

它不仅仅基于哈希代码 - 它也会测试密钥是否相等。两个键可以是不相等的,但具有相同的哈希码。重要的是两个相等的密钥必须具有相同的哈希码。

如果您想为单个密钥存储多个值,则应使用Guava的Multimap之类的内容。

答案 1 :(得分:4)

如果hashCode()相同,则不会覆盖该值。只有在equals方法等于它们时才会覆盖。

答案 2 :(得分:3)

请参阅http://en.wikipedia.org/wiki/Hash_tablehttp://www.docjar.com/html/api/java/util/HashMap.java.html

哈希表或哈希映射是链接列表的数组,由哈希码键入。

答案 3 :(得分:1)

Hashcode代码的主要目的是减少基于散列的集合中equals方法的调用次数。对于equals方法,相同的哈希码不需要返回true。但如果你说它的等于是真的那么它的代码应该是真的。

答案 4 :(得分:1)

散列函数通常用于消除重复数据。这就是集合类型的原因 像Hashmap不允许存储重复数据。 此算法也已用于数据库中,以便在检索时消除可能的重复。