You need to override the Object#hashCode()
method in the Move
class to let it return the same hashCode()
value for the state of the Move
instance. Don’t forget to override Object#equals()
as well.
See also:
Hint: if you’re using an IDE like Eclipse, you can also just autogenerate them. Rightclick somewhere the Move
class, choose Source > Generate hashCode() and equals(). Here is how it look like then:
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + move1;
result = prime * result + move2;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Move other = (Move) obj;
if (move1 != other.move1)
return false;
if (move2 != other.move2)
return false;
return true;
}