您的位置:首页 > 其它

简单介绍hashcode存在的意义

2018-01-23 15:33 288 查看

一、意义:

快速索引,方便检索。

二、简单说明:

我们的对象是存在于堆中的,假设堆中有很多很多的对象,如果要在栈里面找某个对象引用所指向堆中的特定的对象,就需要顺着堆中的所有对象挨个找。由于堆中存在很多很多对象,通过对象引用一 一检索堆中的所有对象,这样做效率不高。

所以解决这种效率不高的办法:

当我们创建好对象后,创建一张表(这张表表hash表)专门用来记录一个内存的位置,也就是hashcode,hashcode指向专门的堆中对象的一个内存地址。当我们通过对象引用找对象的时候,可以很快的通过hashcode来找到内存地址,显然检索一张表比检索堆内存中对象快。

检索表比挨个一一检索的效率高理解:

假如班上的同学都是住在学校的宿舍,如果我们想查找张三住在哪个宿舍,两种办法:

方法一:宿舍挨个找。效率低,做了很多无用功。

方法二:把学生宿舍的住宿信息填在一张表中,当我们想查找某个人时,先从表中查到张三住在8号楼的3楼507,此时,效率就非常的高。

所以我们创建的对象会首先在表中记录对象引用的hashcode来对应内存地址。然后找对象时,先在hash表中找hashcode,找到hashcode就能很快的在内存索引中找到内存地址。



三、hashCode()方法:

获取此对象的哈希码。支持此方法是为了提高哈希表(例如 java.util.Hashtable 提供的哈希表)的性能。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: