这是我对Coor类的equals类的实现,它只包含2个整数x和y.这是实现这种方法的正确方法吗?
public boolean equals(Object obj) {
if (obj == null || obj.getClass() != this.getClass()) {
return false;
}
Coor temp = (Coor) obj;
if (temp.x == this.x && temp.y == this.y) {
return true;
} else {
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
你可以添加一个检查反身相等(等于self):
public boolean equals(Object obj) {
// Reflexive equality: did I get passed myself?
if(this == obj){
return true;
}
if (obj == null || obj.getClass() != this.getClass()) {
return false;
}
Coor temp = (Coor) obj;
return temp.x == this.x && temp.y == this.y;
}
Run Code Online (Sandbox Code Playgroud)
是的,它会的.
还要确保覆盖你的hashCode()方法 - 永远不要覆盖一个而不做另一个,它会混淆你的集合中的地狱.
你的情况可以使用一个哈希,它只是简单地移动一个int 32位并将其添加到另一个创建一个完全唯一的long(在这种情况下是一个完美的哈希函数 - 没有冲突)
| 归档时间: |
|
| 查看次数: |
564 次 |
| 最近记录: |