如何在此代码中访问检查我的对的实际值? Java的

时间:2012-12-12 03:47:51

标签: java arraylist equals

我想查看成对的两个z,y是否已存在于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);
}

1 个答案:

答案 0 :(得分:3)

您需要覆盖boolean equals(Object otherPair)方法(当您覆盖equals时,您也应该覆盖int hashCode()。另外,请考虑使用Set代替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();
  }
}