为什么重写hashCode 同时equals
来源:互联网 发布:ubuntu 查看安装目录 编辑:程序博客网 时间:2024/05/01 16:20
为什么重写hashCode 同时equals
hashcode相等只能保证两个对象在一个HASH表里的同一条HASH链上,继而通过equals方法才能确定是不是同一对象,
如果结果为true, 则认为是同一对象不在插入,否则认为是不同对象继续插入。
例:
public int hashCode(){
return num%4
}
结果如下:
模为0的 4,8,12 在A列,即他们的HashCode是一样的,都是0
他们虽然HashCode一样,但值不一样。
hashCode()的返回值和equals()的关系如下:
1. 如果x.equals(y)返回“true”,那么x和y的hashCode()必须相等。
2. 如果x.equals(y)返回“false”,那么x和y的hashCode()有可能相等,也有可能不等。
在java的集合中,判断两个对象是否相等的规则是:
1),判断两个对象的hashCode是否相等
如果不相等,认为两个对象也不相等,完毕
如果相等,转入2)
(这一点只是为了提高存储效率而要求的,其实理论上没有也可以,但如果没有,实际使用时效率会大大降低,所)
2),判断两个对象用equals运算是否相等
如果不相等,认为两个对象也不相等
如果相等,认为两个对象相等(equals()是判断两个对象是否相等的关键)
- 为什么重写hashCode 同时equals
- 重写equals方法的同时为什么要重写hashcode方法
- 为什么equals()方法和hashCode()方法需要同时重写?
- 为什么要同时重写hashcode和equals方法
- 重写equals需要同时重写hashCode()
- 为什么重写equals方法的同时也要重写hashcode方法?
- Java基础之重写equals方法的同时为什么要重写hashCode方法
- 为什么在重写 equals方法的同时必须重写 hashcode方法
- 为什么重写equals()必须重写hashcode()
- 为什么重写equals一定要重写hashCode
- 为什么重写了equals(),还要重写hashCode()?
- 为什么重写equals()也要重写hashCode()
- 为什么重写equals方法要重写hashCode
- hashcode和equals为何要同时重写
- hashcode和equals为何要同时重写
- hashcode和equals为何要同时重写
- hashcode和equals为何要同时重写
- 同时重写equals和hashCode的意义
- 2.1--在应用程序中如何 创建 并 引用 多文档模板?
- 杀“木马”经历
- Spring AOP 详解
- SQL server触发器入门2-重命名触发器
- Set OpenSolaris publisher to local software store
- 为什么重写hashCode 同时equals
- 在.net 当中如何XML序列化一个Collection(转载)
- 特殊符号【转】
- 60条令你大吃一惊的小常识
- 记-01
- 为什么很多善良的人一生痛苦、磨难很多?
- kernel 网桥代码分析
- QQ各个文件的用处!【转】
- 太多的事情还没有做