equal()和HashCode()比较
来源:互联网 发布:厨具 知乎 编辑:程序博客网 时间:2024/05/17 03:04
引用http://blog.sina.com.cn/s/blog_59e0c16f0100xne7.html
1.为什么要重载equal()?
因为Object的equal()默认是比较两个对象的引用,意思就是指向同一内存的,相等,否则不相等。如果需要利用对象里面的值来判断是否相等则需要重载equal()。
2.为什么要重载HashCode()?
一般不需要重载HashCode(),只有当类需要放在HashTable,HashMap,HashSet等hash结构的集合中的时候才会重载HashCode,那么为什么要重载HashCode呢?就HashMap来说,它像一个大内存块,里面有许多小内存块,小内存块里面有一系列对象,可以利用小内存块来查找小内存块,所以当equal相等时,hashcode必须相等,而且如果是object对象,必须重载hashcode和equal方法。
(1)因为是按照hashcode来访问小内存块,所以hashcode必须相等;
(2)HashMap获取一个对象是比较key的hashcode相等和eaqual为true;
之所以hashcode相等而equal不相等,就如同objectA和objectB都有属性name,而hashcode都以name计算,所以hashcode一样,但两个对象属于不同的类型,所以equal为false。
4.为什么需要hashcode?
(1)通过hashcode能很快找到小内存块;
(2)通过hashcode比较比equal快,当get时先比较hashcode,如果hashcode不同直接返回false。
0 0
- equal()和HashCode()比较
- hashcode和equal的区别比较
- 关于hashcode()和equal()方法的运用
- Hashcode, Equal和Dictionary
- HashCode和equal方法
- HashCode和equal方法
- 【转】 equal和hashcode
- HashCode和equal方法
- HashCode和equal方法
- HashCode和equal方法
- 重载equal和hashCode
- HashCode和equal方法
- hashCode和equal二三事
- hashCode和equal方法
- HashCode和equal方法
- HashCode和equal方法
- HashCode和equal
- 重载equal和hashCode
- 为什么会存在潜规则和各种现象
- PS学习笔记----------利用图层蒙版来实现无损抠图
- 工具类
- Struts2学习笔记(七):OGNL之<s:property>标签访问值栈(value Stack)对象属性
- jdfz-2978 第k短路(强)
- equal()和HashCode()比较
- 2090264 - Installation / Upgrad of BI_CONT 757 : error in DDIC_ACTIVATION phase
- linux上的压力测试
- oc assign / copy / retain / 容器 / 多态
- UVA 562Dividing coins(01 背包问题)
- PHP正则表达式及实例
- 局域网安全
- Android 倒计时
- ztree一次性加载数据