【发布时间】:2017-02-28 15:17:43
【问题描述】:
我正在尝试从哈希图中检索一个值。键是实现了 equals 和 hashcode 的 TransitionKey 对象。当我使用 equals(...) 比较我要查找的键和 hashmap 中的当前键时,它返回 true,但 get 返回 null 并且 containsKey 返回 false。自从将密钥添加到哈希图中后,我没有以任何方式修改密钥。有人可以帮忙吗?
TransitionKey current = new TransitionKey(this.currentState, inputSymbol);
for(TransitionKey tk: transitions.keySet()) {
System.out.println(tk.equals(current)); // True (only one key in table)
System.out.println(transitions.containsKey(current)); // false
String value = transitions.get(tk).toString(); // null
}
在TransitionKey类中:
/**
* @override
*/
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof TransitionKey)) return false;
TransitionKey transitionKey = (TransitionKey) o;
return (state.equals(transitionKey.state)) && (symbol==transitionKey.symbol);
}
/**
* @override
*/
public int hashcode() {
int result = (int)symbol;
result = result*31 + state.hashCode();
return result;
}
【问题讨论】: