2

我想看看z,y配对的两个是否已经存在于我的ArrayList. 我知道每次我对 pair 进行新引用时,它都会存储在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您也应该覆盖int hashCode()。另外,请考虑使用 aSet而不是 an ArrayList,这样您就不需要检查重复项。

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 回答