equals()和hashcode()
2016-02-16 15:24
204 查看
默认调用的情况:
1.集合在存放对象时,首先判断hashcode(),再判断equals如果都是true,认为是相同的两个元素不进行存储。
删除对象时,将从hashcode指定位置查找再删除
2.在hashSet集合中的对象如果改变了对象的hashCode值将导致无法查找到以及无法删除集合中的对象,可能导致内存泄漏;
因此以对象hashcode值作为定位的方式需要特别注意;
3.对象的hashcode值必须满足一致性:即多次调用其值用来定位的时候都必须相同(比如对象存放和查找的时候)
4.相同对象的hashcode是相等的;
重写hashcode的场景:
当需要认为多个对象某些值相同就是同一个对象的时候;譬如多个对象有些认为是相同的存放到集合中要排除掉
同时还需要重写equals()
1.集合在存放对象时,首先判断hashcode(),再判断equals如果都是true,认为是相同的两个元素不进行存储。
删除对象时,将从hashcode指定位置查找再删除
2.在hashSet集合中的对象如果改变了对象的hashCode值将导致无法查找到以及无法删除集合中的对象,可能导致内存泄漏;
因此以对象hashcode值作为定位的方式需要特别注意;
3.对象的hashcode值必须满足一致性:即多次调用其值用来定位的时候都必须相同(比如对象存放和查找的时候)
4.相同对象的hashcode是相等的;
重写hashcode的场景:
当需要认为多个对象某些值相同就是同一个对象的时候;譬如多个对象有些认为是相同的存放到集合中要排除掉
同时还需要重写equals()
相关文章推荐
- 搜索引擎的使用技巧
- 【iOS】GCD死锁
- 关于textarea根据文本内容自动改变高度
- if 语句里面有 return;
- LXC(Linux containers)快速入门
- 设计模式-结构型模式汇总
- CSS对浏览器的兼容性常见处理方式小结
- php 接口的实现
- 【 bzoj 3670 】 [Noi2014]动物园 - KMP
- javascript每日必学之运算符
- 缓存
- 【转】Android小技巧持续更新
- git 分支管理,提交到远程服务器上面
- c语言实现赫夫曼树的构建以及生成赫夫曼编码(《数据结构》算法6.12)
- 【转载】数据库表空间
- Spring源码学习之BeanFactory体系结构
- MySQL的错误:No query specified
- Maven学习 (六) 搭建多模块企业级项目
- python绘制非常漂亮的图表
- 各种UIGestureRecognizer 手势