2

z,yペアを構成する2 つが既に my 内に存在するかどうかを確認したいArrayList。ペアの新しい参照を作成するたびに、それが 内に格納されることを知っていますArrayList。しかし、どういうわけか内容を確認したいのですが、onePair存在する場合は追加しないでください。

基本的に、ユニークなペアを自分のに追加したいArrayList.

public class Pair {
    public int left;

    public int right;   

    Pair(int left, int right){
        this.left = left;
        this.right = right;
    }
}

他のクラスでは:

ArrayList<Pair> pairs = new ArrayList<Pair>();
onePair = new Pair(z, y);
if(!pairs.contains(onePair)){
    pairs.add(onePair);
}
4

1 に答える 1

3

boolean equals(Object otherPair)メソッドをオーバーライドする必要があります(オーバーライドするときは、equalsもオーバーライドする必要があります。また、重複をチェックする必要がないように、 an の代わりにint hashCode()a を使用することを検討してください。SetArrayList

public class Pair {
  public int left;
  public int right;

  Pair(int left, int right) {
    this.left = left;
    this.right = right;
  }

  public boolean equals(Object otherObj) {
    if (otherObj == null || !(otherObj instanceof Pair)) {
      return false;
    }
    Pair otherPair = (Pair) otherObj;
    return (this.left == otherPair.left && this.right == otherPair.right);
  }
  public int hashCode() {
    return new Integer(this.left).hashCode() + new Integer(this.right).hashCode();
  }
}
于 2012-12-12T03:50:56.187 に答える