package day06;
/**
* 当自定义类型 元素需要作为Map中的key使用时,通常要注意
* API文档上 也有说说明
* 当一个类需要重写equals方法时就应当连同重写hashCode方法
* 并且重写是要 注意:
*
* 当连个对象equals比较为true时,hashCode方法返回的数字
* 必须相同,反之虽然不是必须的,但也尽量保证两个对象的
* hashCode值若相同,equals比较为true,否则会在HashMap
* 中产生链表,影响查询性能
*
* hashCode方法返回的 数字应当是一个稳定的值,即:在参与
* equals比较的属性值没有发生改变的前提下 ,多次调用
* hashCode方法返回的数字应当是一样的。
* @author soft01
*
*/
public class Key {
private int x;
private int y;
@Override
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;
Key other = (Key) obj;
if (x != other.x)
return false;
if (y != other.y)
return false;
return true;
}
}
JAVA学习day72--key方法
最新推荐文章于 2022-03-27 21:52:01 发布