为什么要覆盖Java中的equals和hashcode
来源:互联网 发布:商标域名是什么 编辑:程序博客网 时间:2024/06/10 13:47
众所周知,覆盖equals方法必须覆盖hashcode方法。那么,为什么要覆盖equals和hashcode方法呢?
1.equals
在list列表的list.contains()方法中,判断是否包含用的是equals方法。所以,针对自定义对象应该重写equals。
2.hashcode
在hashMap的containsKey()方法中,判断是否包含键(加入键是自定义对象)时,索引数组(hashmap由数组和链表组成--不懂的请自补)用到了对象的hashcode。所以,针对自定义对象也应该重写hashcode。
综上:
如果两个对象相等(使用equals()方法),那么必须拥有相同的哈希码(使用hashCode()方法)。
即使两个对象有相同的哈希值(hash code),他们不一定相等.意思就是: 多个不同的对象,可以返回同一个hash值。
参考:http://book.51cto.com/art/201202/317533.htm
http://blog.csdn.net/renfufei/article/details/14163329
0 0
- 为什么要覆盖Java中的equals和hashcode
- Java 覆盖equals和hashCode方法
- 《问题总结》JAVA什么时候要覆盖toString()、equals()、hashCode()方法??为什么要覆盖呢? 《通俗回答》
- 为什么在覆盖equals时一定也要覆盖hashCode
- java中的equals和hashCode
- Java中的hashCode()和equals()
- java中的equals和hashCode
- Java中的equals()和hashCode()
- Java中的equals和hashCode
- Java中的hashCode()和equals()
- Java中的hashCode()和equals()
- Java中的equals和hashCode
- Java中的equals和hashCode
- java中的equals( )和hashcode( )
- Java中的hashcode 和 equals
- java为什么要重写hashCode和equals方法
- hashCode 和 equals为什么要一起重写?
- 为什么要重写hashcode和equals方法
- Fragment软键盘的显示和隐藏
- 【FAQ】oclint-xcodebuild error:cannot find original pch source file?
- JavaScript 数据结构(1):栈 Stack
- Kibana User Guide [4.2] » Getting Kibana Up and Running
- 使用synergy设置mac和ubuntu共享一套鼠标键盘
- 为什么要覆盖Java中的equals和hashcode
- unity3d OnMouseDown()函数没被调用
- 迅速增强公司信息安全性的10大划算方式
- 互联网金融青年会成立一周年庆典在京举办
- 在一串字符中匹配出4个连续的数字
- 轻松把玩HttpClient之封装HttpClient工具类(二),插件式配置HttpClient对象
- JAVA集合类总结
- FastDFS的配置、部署与API使用解读(1)Get Started with FastDFS
- [Sep 2015 ~ Oct 2015] Deep Learning in arxiv