一、意义:
快速索引,方便检索。
二、简单说明:
我们的对象是存在于堆中的,假设堆中有很多很多的对象,如果要在栈里面找某个对象引用所指向堆中的特定的对象,就需要顺着堆中的所有对象挨个找。由于堆中存在很多很多对象,通过对象引用一 一检索堆中的所有对象,这样做效率不高。
所以解决这种效率不高的办法:
当我们创建好对象后,创建一张表(这张表表hash表)专门用来记录一个内存的位置,也就是hashcode,hashcode指向专门的堆中对象的一个内存地址。当我们通过对象引用找对象的时候,可以很快的通过hashcode来找到内存地址,显然检索一张表比检索堆内存中对象快。
检索表比挨个一一检索的效率高理解:
假如班上的同学都是住在学校的宿舍,如果我们想查找张三住在哪个宿舍,两种办法:
方法一:宿舍挨个找。效率低,做了很多无用功。
方法二:把学生宿舍的住宿信息填在一张表中,当我们想查找某个人时,先从表中查到张三住在8号楼的3楼507,此时,效率就非常的高。
所以我们创建的对象会首先在表中记录对象引用的hashcode来对应内存地址。然后找对象时,先在hash表中找hashcode,找到hashcode就能很快的在内存索引中找到内存地址。
三、hashCode()方法:
获取此对象的哈希码。支持此方法是为了提高哈希表(例如 java.util.Hashtable 提供的哈希表)的性能。