/**
* 当一个类的实例作为HashMap的key时它的equals方法
* 与hashcode方法的重写直接影响着散列表(HashMap)
* 的查询性能
* 在api文档中object对这两个方法的重写做了说明
* 当我们重写一个类的equals方法时,就应当连同重写hashcode方法
* 这两个方法重写应当遵循:
* 1:一致性,当两个对象的equals比较为true时,hashcode方法返回的数字
* 必须相等。反过来虽然不是必须,但也应当遵循,否则在Hahcode中
* 会形成链表影响性能。
* 所以两个对象的hashcode值相同,equals比较也应当为true
* 2.稳定性,hashcode方法多次调用后返回的数字应当相同,不应是
* 一个变化的值,除非equals比较的属性值发生了改变。
*/
public class mon2 {
private int x;
private int y;
@Override//鼠标右键-source-hashcode····
public int hashCode() {//"身份证号码唯一性"
final int prime = 31;
int result = 1;
result = prime * result + x;
result = prime * result + y;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
mon2 other = (mon2) obj;
if (x != other.x)
return false;
if (y != other.y)
return false;
return true;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(new mon2().hashCode());
}
}
hashcode重写
最新推荐文章于 2024-09-02 11:10:46 发布