タイプのハッシュマップを定義しました:
HashMap<Position, Double> list = new HashMap<>();
Positionは、2つの属性xとyを持つクラスです。
ポジションがすでにリストにあるかどうかを確認したいのですが、これを試しました:
public void addToList(Position p, double somme) {
if (this.list.containsKey(p)) {
this.list.replace(p, this.list.get(p) + somme);//add the old value somme
} else {
this.list.put(p, somme);
}
}
チェックが存在位置の検出に失敗するたびに、キーが存在するかどうかをチェックする代わりに、より具体的に、xとyの値を確認する必要があると思います。
ポジションがリストにあるかどうかを確認するにはどうすればよいですか?
xとyに同じ値を持つ2つの要素が等しくなるように、Positionオブジェクトのequals
およびhashCode
メソッドをオーバーライドする必要があります。
@Override
public boolean equals(Object obj) {
if (obj == this) {
return true;
}
if (obj == null || obj.getClass() != this.getClass()) {
return false;
}
Position otherPos = (Position) obj;
return x == otherPos.x
&& y == otherPos.y;
}
@Override
public int hashCode() {
return Objects.hash(x, y);
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加