标题: equals的问题 [打印本页] 作者: 谭荣强 时间: 2014-4-7 08:20 标题: equals的问题 ReflectPoint是要存入hashSet的一个对象,eclipse里面默认的equals方法的这两行什么意思啊 记得老毕教的的是: x*30+y 这样写。
result = prime * result + x;
result = prime * result + y;
public class ReflectPoint {
private int x;
public int y;
public ReflectPoint(int x, int y) {
super();
this.x = x;
this.y = y;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + x;
result = prime * result + y;
return result;
}
} 作者: hyace 时间: 2014-4-7 08:55 本帖最后由 hyace 于 2014-4-7 08:57 编辑
result = prime * result + x; //将x坐标经过运算赋值给result
result = prime * result + y; //将result经过运算,并加上y再赋值给result
最后这个result就是要返回的哈希值。这里哈希值的计算方法是灵活多样的,你计算地越复杂,那么每个元素的hashCode就更不容易重复。如果仅仅是对x进行运算而返回hashCode值的话,那么对于(2,6)和(2,9),这两个坐标的hashCode值就会相同,而如果对x和y都参与处理的话,例如就用上面的方法计算,就会得到不同的hashCode。