にを保存するという面白い状況がCoordinate
ありHashMap<Coordinate, GUIGameField>
ます。
さて、それについての奇妙なことは、私がコードの断片を持っているということです。それは、座標を2回使用してはならないことを保護する必要があります。しかし、このコードをデバッグすると、次のようになります。
if (mapForLevel.containsKey(coord)) {
throw new IllegalStateException("This coordinate is already used!");
} else {
...do stuff...
}
...containsKey
常に、を返しますがfalse
、ハッシュコード9731の座標をマップに保存し、現在の座標にもハッシュコード9731があります。
その後、次のmapForLevel.entrySet()
ようになります。
(java.util.HashMap$EntrySet) [(270,90)=gui.GUIGameField@29e357, (270,90)=gui.GUIGameField@ca470]
何が間違っていたのでしょうか?アイデアが足りなくなった。助けてくれてありがとう!
public class Coordinate {
int xCoord;
int yCoord;
public Coordinate(int x, int y) {
...store params in attributes...
}
...getters & setters...
@Override
public int hashCode() {
int hash = 1;
hash = hash * 41 + this.xCoord;
hash = hash * 31 + this.yCoord;
return hash;
}
}