hashCode与equal
来源:互联网 发布:微博软件加人软件 编辑:程序博客网 时间:2024/04/28 22:06
- 1.hashcode是用来查找的,如果你学过数据结构就应该知道,在查找和排序这一章有
- 例如内存中有这样的位置
- 0 1 2 3 4 5 6 7
- 而我有个类,这个类有个字段叫ID,我要把这个类存放在以上8个位置之一,如果不用hashcode而任意存放,那么当查找时就需要到这八个位置里挨个去找,或者用二分法一类的算法。
- 但如果用hashcode那就会使效率提高很多。
- 我们这个类中有个字段叫ID,那么我们就定义我们的hashcode为ID%8,然后把我们的类存放在取得得余数那个位置。比如我们的ID为9,9除8的余数为1,那么我们就把该类存在1这个位置,如果ID是13,求得的余数是5,那么我们就把该类放在5这个位置。这样,以后在查找该类时就可以通过ID除 8求余数直接找到存放的位置了。
- 2.但是如果两个类有相同的hashcode怎么办那(我们假设上面的类的ID不是唯一的),例如9除以8和17除以8的余数都是1,那么这是不是合法的,回答是:可以这样。那么如何判断呢?在这个时候就需要定义 equals了。
- 也就是说,我们先通过 hashcode来判断两个类是否存放某个桶里,但这个桶里可能有很多类,那么我们就需要再通过 equals 来在这个桶里找到我们要的类。
- 那么。重写了equals(),为什么还要重写hashCode()呢?
- 想想,你要在一个桶里找东西,你必须先要找到这个桶啊,你不通过重写hashcode()来找到桶,光重写equals()有什么用啊
0 0
- java equal 与 hashcode
- hashCode与equal
- 重写hashcode()与equal()
- 深入理解 equal 与 hashcode
- String的equal与hashcode
- equal与hashcode的说明
- Java - Hash - hashCode()与equal()
- HashCode与equal 的作用与区别
- hashCode()equal
- equal() 与hashcode()之我理解
- java谜题-库谜题(复写hashcode与equal方法)
- java谜题-库谜题(复写hashcode与equal方法)
- Java基础之equal()与hashcode()函数分析
- Hashcode, Equal和Dictionary
- HashCode和equal方法
- HashCode和equal方法
- 关于equal hashcode 重写
- 【转】 equal和hashcode
- C++课程笔记(2)——Part1 Basic Facilities
- leetcode_53. Maximum Subarray
- Linux系统/etc/fstab文件损坏如何处理
- ttyUSB串口设备节点生成过程
- Tiny210v2( S5PV210 )平台下创建基本根文件系统
- hashCode与equal
- Linux-cpu分析-top
- DFS Deep First Search Tips
- Qt编程入门(1) : 信号和槽
- 泛型方法
- 机器学习之支持向量机原理
- 中缀表达式转后缀表达式并计算结果
- 【数据结构&算法】数据结构之单向链表(练习)
- thinking in java——0318学习笔记