我已经hashcode
为这个类编写了一个函数,由于某种原因,哈希映射无法正确识别密钥何时实际存在于HashMap
. (坐标是一个字符串)
@Override
public int hashCode() {
return coordinates.hashCode();
}
而且我还.equals
为该类编写了一个方法,用于测试两对坐标是否彼此相等;但是,为了验证我的哈希码方法是否正常工作,我已将该.equals
方法切换为以下方法。
public boolean equals(Object arg) {
Block a = (Block) arg;
return hashCode() == a.hashCode();
}
他们都在其他地方被hashmap.containskey()
调用,如下所示:
return (hashblocks.containsKey(newz));
出于某种原因,这只在 50% 的时间里应该返回 true(我们甚至重新输入完全相同的情况,有时它会起作用,有时却不起作用)我过去在尝试获取 contains 方法时遇到了很多问题为HashMap
s 和Set
s 正常工作,我想知道为什么这个实现特别有困难。(基本上,错误可能是什么)
3 1 3 1
true
4 2 4 2
false
0 0 1 0
0 3 1 3
2 0 3 0
2 3 3 3
0 1 1 2
2 1 2 2
4 0 4 0
4 2 4 2
3 1 3 1
3 2 3 2
3 1 3 1
true
4 2 4 2
true
3 2 3 2
true
0 0 1 0
0 3 1 3
2 0 3 0
3 3 4 3
0 1 1 2
2 1 2 2
4 0 4 0
4 2 4 2
3 1 3 1
3 2 3 2
查询后跟它的结果,一长串数字代表所有键,后跟换行符