我的 hashMap 有问题。更具体的是 containsKey。 我想检查我的哈希中是否存在一个对象。问题是,当我使用包含相同确切数据的 2 个不同对象调用此方法时,它们应该具有相同的 hashCode。
Person pers1,pers2;
pers1=new Person("EU",22);
pers2=new Person("EU",22);
public int hashCode(){ //From Person Class
return this.getName().hashCode()+age;
}
在我的哈希中插入 pers1 键并调用“hash.containsKey(pers1);”之后返回 true,但“hash.containsKey(pers2)”返回 false。为什么以及如何解决这个问题?
谢谢!
最佳答案
问题的原因似乎是您没有重写 Person 类中的 equals 方法。 Hashmap 在搜索时需要它来定位键。
搜索 key 时执行的步骤如下:
1) 在对象(key)上使用 hashCode() 来定位可以放置 key 的适当存储桶。
2) 找到存储桶后,尝试使用 equals() 方法查找特定的 Key。
关于java - Java 中的 HashMap。 hash.containsKey 返回意外的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23659433/