我现在在这个问题上挣扎了一段时间。我知道,如果您使用哈希集,如果您处理的对象与 String 不同(我猜相同的字符串具有相同的哈希码),则必须覆盖 hashcode 和 equals,并选择要考虑的属性,因此对象是唯一的财产。
但是 hashmap 是怎么回事呢?您是否需要以及何时需要重写 hashcode() 和 equals() ?我很确定你会因为这个问题而让我心碎,但如果有人向我解释,我会非常高兴。明天我有重要的考试,这真的让我很烦恼!
我特别要求哈希图!对于哈希集,我想我理解这个想法。我还阅读了 hashcode() 和 hashfunction
答案是肯定的。
在 Java 中,您可以在集合中添加对象。假设您想要找到一个名为 A 的对象,并将其添加到名为 L 的列表中。假设这是您使用自己的类定义的对象,并且您重写了方法 Object#equals()。当您循环遍历列表 L 时,您正在测试这些对象中的任何一个是否等于对象 A。如果 equals 方法返回 true,则您已找到对象。
当您将对象添加到任何 HashTable、HashMap 或 HashSet 时,将使用 hashcode 方法生成一个数字。该数字应该尽可能唯一。同一类的对象可能在其实例字段中具有不同的值,但它们的 hashcode 方法产生相同的值。如果您有某个类的两个对象 X 和 Y,并且它们具有相同的哈希码,并且您将它们都放入 HashMap Q 中,那么它们最终会位于同一个存储桶 P 中。假设 P 有两个对象。假设您将 Q 传递给具有 X 和 Y 的方法。该方法想要检查 Q 中是否存在 X。Q 将获取 X 并获取哈希码。 Q 将使用哈希码来查找存储桶。桶将是P。桶P有两个对象。此时使用 equals 方法通过将桶中的每个对象与 X 进行比较来确定桶中是否包含 X。如果桶中的某个对象与 X 匹配,则 X 存在于 Q 中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)