简单介绍hashcode存在的意义

一、意义:

快速索引,方便检索。

二、简单说明:

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

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

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

检索表比挨个一一检索的效率高理解:
假如班上的同学都是住在学校的宿舍,如果我们想查找张三住在哪个宿舍,两种办法:
方法一:宿舍挨个找。效率低,做了很多无用功。
方法二:把学生宿舍的住宿信息填在一张表中,当我们想查找某个人时,先从表中查到张三住在8号楼的3楼507,此时,效率就非常的高。

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

这里写图片描述

三、hashCode()方法:

获取此对象的哈希码。支持此方法是为了提高哈希表(例如 java.util.Hashtable 提供的哈希表)的性能。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值