0
ハッシュマップから値を取得しようとしています。キーは、equalsとhashcodeを実装したTransitionKeyオブジェクトです。参照するキーとハッシュマップの現在のキーを比較するためにequals(...)を使用すると、trueを返しますが、getはnullを返し、containsKeyはfalseを返します。私はハッシュマップに追加してからキーを変更していません。誰も助けることができますか? TransitionKeyクラスでキーは一致しますが、get/containsKeyは見つからない
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
}
:
/**
* @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;
}
ありがとうございました。私は、私が大文字ではなかったので、私のオーバーライドはどちらかといえなかった... –