equals()和hashCode()
来源:互联网 发布:淘宝买家信用等级是- 编辑:程序博客网 时间:2024/06/13 06:36
equals()和hashCode() 总结
一、“==”关系
1.对于引用型变量(如String,Object),就是比较两个对象是不是同一个对象,即是否指向了同一个对象;
2.对于值类型变量(如int,double),比较的就是两个数据是不是相等。
二、“equals”关系
之所以出现equals()方法,是因为很多时候“==”不能反应“相等”。如,对于String对象,当两个对象的字符串序列是一直的,我们就认为他们是“相等”的。
注: Object中equals()的默认实现是比较两个对象是不是“==”
三、“hashCode”关系
1. hashCode返回的是哈希码,是在内存地址上经过特定算法得到的。
2. HashCode 其只是在需要用到哈希算法的数据结构中才有用,比如在 HashSet、HashMap 和Hashtable中,其用途是为了方便快速地查找对象。
注:哈希码不是内存地址;
四、“equals”与“hashCode”的关系
1.覆写equals后,尽量同时也覆写hashCode,覆写规则见附-1;
2. 对于equals()相等的两个对象,其hashCode()返回的值一定相等;
3. 如果两个对象hashcode不相等,他们一定不equals
4. 两个对象的hashCode相同,并不一定表示两个对象就相同。可以理解为“存放在同一个篮子里”,内存相当于由许多篮子组成,每个篮子对应一个hash值,同时,每个篮子中可以有多个对象,存放在相同篮子内的对象有相同的hash值
5.向不允许重复元素的集合中添加元素,按照如下规则判断:
1)比较hash值,集合中不存在相同的hash值,则添加对象;
2)当存在相同hash值,继续判断qeuals,均不equals,则添加对象;
3)否则对象已存在,添加失败。
附-1:覆写规则
1.如果x.equals(y)返回“true”,那么x和y的hashCode()必须相等。
2.如果x.equals(y)返回“false”,那么x和y的hashCode()有可能相等,也有可能不等。
3.另外,对于equals()不同的对象要尽量做到hash码不同
- equals() 和 hashCode()
- hashcode()和equals()方法
- hashcode() 和 equals()方法
- 关于equals和hashCode
- 重写equals()和hashCode()
- 关于hashcode()和equals()
- hashcode和equals
- equals和hashCode
- equals 和 hashcode
- 关于equals() 和hashcode()
- 关于equals() 和hashcode()
- equals()和hashCode()
- equals() 和hashcode()详解
- hashCode()和equals()
- equals和 hashcode比较
- 浅谈equals和hashcode
- equals和hashCode方法
- hashCode() 和 equals() 理解
- Android&Java解析JS
- 吐槽文:关于java命名规则
- JAVA三种设计模式--------单例、工厂、代理模式
- 超级分类汇总函数——SUBTOTAL
- 使用Java语言开发微信公众平台(三)——被关注回复与关键词回复
- equals()和hashCode()
- 【技巧】Bootstrap3表格之实战
- Problem k-11 Box of Bricks
- AEAI DP开发统计分析
- 精通 Groovy
- MyEclipse找不到install new software,如何添加问题
- 何为HTTP、HTTPS、TCP/IP协议?
- GYM 101102 F.Exchange(水~)
- 微信公众号分享