栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

hashCode和equals

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

hashCode和equals

##hashcode和equals
hashcode方法返回该对象的哈希码值。

hashCode是用来在散列存储结构中确定对象的存储地址的;

equals比较两个对象的内存地址是否相等

默认对象的hashcode方法返回值永远大于0

public boolean equals(object ob){
return (this==ob);
}//判断两个对象的地址是否相同

class H{
public native int hashCode(){//hashCode返回值是int
 return 1;
}
}
H h1=new H();
H h2=new H();
System.out.println(h1.hashCode()==h2.hashCode());//true
System.out.println(h1.equals(h2));//fauls,内存地址不相同

1、hashCode和equals返回值应该是稳定的,不应有随机性

在hashmap中通过hashCode得到的值计算出在数组中的下标,每个下标对应一个链表或者是红黑数,然后用

equals方法对比每个结点的位置是否相同

2、默认对象的hashCode方法返回值永远大于等于0

while(ture){
object o=new object();
if(o.hashCode()<0){
System.out.println(o.hashCode());
}
}//没有输出,因为hashCode方法默认永远大于0

3、默认对象的hashCode方法返回值不是对象的地址

###为什么要重写equals
equals是比较两个对象地址是否相同的方法,如果比较的是两个自定义的对象的地址,那么返回值一定是false没有意义

如果要判断两个自定义的对象地址是否相等就必须重写equals
###为什么要重写hashCode
如果没有重写hashCode默认就会调用Object中的hashCode对比两个对象的引用地址,结果就是false
##总结
hashCode和equals两个方法是用来协同判断两个对象是否相等的,采用这种方式的优点是可以提高程序插入

和查询的速度

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/763781.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号