1)hashcode方法
HashMap的put函数
public V put(K key, V value) {
return putVal(hash(key), key, value, false, true);
}
static final int hash(Object key) {
int h;
return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);
}
如不重写hashCode 某个类的对象a 对象b 属性一样而hashCode不一样 ,导致HashMap的key有2个或多个一样的.
案例
x类未重写hashcode
HashMap<x类,B类> map=new HashMap<>();
2)equals方法
Object类
public boolean equals(Object obj) {
return (this == obj);
}
如不重写 对象a 对象b 属性一样而equals()返回也是false 根据对象地址而对比
3)总结
网友评论