我想查看成对的两个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);
}
答案 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();
}
}