【问题标题】:two keys are same hashMap over write" the existing one?两个键是相同的 hashMap 覆盖”现有的?
【发布时间】:2011-05-26 23:51:36
【问题描述】:

hash map 是如何在内部存储数据的……我知道它会计算 key 的 HashCode 值并存储它。如果两个 key 具有相同的 hash code,它将放入同一个桶中。但是为什么如果“两个键是相同的 hashMap 覆盖”现有的呢?

【问题讨论】:

    标签: java collections hashmap


    【解决方案1】:

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

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

    如果你想为一个键存储多个值,你应该使用像 Guava 的 Multimap 这样的东西。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

        哈希表或哈希映射是一个链表数组,以哈希码为键。

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            【解决方案5】:

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2021-06-05
              • 1970-01-01
              • 1970-01-01
              • 2017-11-05
              • 1970-01-01
              相关资源
              最近更新 更多