2010-12-17 67 views
1

哈希映射究竟是如何在内部存储数据......我知道它会计算密钥的HashCode值并将其存储。如果两个密钥具有相同的哈希代码,它将放入相同斗。但是为什么,如果“两个键是在写入相同的HashMap”现有一个?两个键是相同的哈希映射在写“现有的?

回答

1

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

9

好吧,这就是它设计的目的,它是键/值对的映射,其中任何键都与0或1值相关联。键的第二个值,该键的条目将被替换。

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

如果你想存储一个键的多个值,你应该使用类似Guava的Multimap

4

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

1

散列函数通常用于消除重复数据。这就是为什么集合类型 像Hashmap不允许存储重复数据。 该算法已被用于数据库,以消除检索时可能出现的重复。