简单介绍hashcode存在的意义
2018-01-23 15:33
288 查看
一、意义:
快速索引,方便检索。二、简单说明:
我们的对象是存在于堆中的,假设堆中有很多很多的对象,如果要在栈里面找某个对象引用所指向堆中的特定的对象,就需要顺着堆中的所有对象挨个找。由于堆中存在很多很多对象,通过对象引用一 一检索堆中的所有对象,这样做效率不高。所以解决这种效率不高的办法:
当我们创建好对象后,创建一张表(这张表表hash表)专门用来记录一个内存的位置,也就是hashcode,hashcode指向专门的堆中对象的一个内存地址。当我们通过对象引用找对象的时候,可以很快的通过hashcode来找到内存地址,显然检索一张表比检索堆内存中对象快。
检索表比挨个一一检索的效率高理解:
假如班上的同学都是住在学校的宿舍,如果我们想查找张三住在哪个宿舍,两种办法:
方法一:宿舍挨个找。效率低,做了很多无用功。
方法二:把学生宿舍的住宿信息填在一张表中,当我们想查找某个人时,先从表中查到张三住在8号楼的3楼507,此时,效率就非常的高。
所以我们创建的对象会首先在表中记录对象引用的hashcode来对应内存地址。然后找对象时,先在hash表中找hashcode,找到hashcode就能很快的在内存索引中找到内存地址。
三、hashCode()方法:
获取此对象的哈希码。支持此方法是为了提高哈希表(例如 java.util.Hashtable 提供的哈希表)的性能。相关文章推荐
- 微信官方对九大接口作了简单的介绍,看看微信开放这些接口有什么意义
- 不要进行过度设计,某一层存在真的有意义吗?是否可以更简单。
- 空间索引使用的意义及网格索引和四叉树索引简单介绍
- 这里简单介绍一个自己写的检测某个进程是否存在的bash小脚本
- 装箱和拆箱存在的意义介绍
- java 定时跑批数字意义简单介绍
- HashCode的存在的意义(什么是Hash Code,它的作用是什么?)
- Linux中的竖线(|)意义——管道符号的简单介绍
- 基于JQ的canvas插件→zwibbler,画图插件简单介绍,附下载地址
- awk、gawk、nawk、mawk的简单介绍
- swift的简单介绍!
- VBS简单介绍 v0.1
- 简单介绍一下linux下的sendmail邮件服务器
- 观察者模式简单介绍
- 对apache-commons工具类的简单介绍
- Android MediaPlayer使用方法简单介绍
- PPSOU研究小组简单介绍
- 数据库学习-简单介绍
- 【Facebook的UI开发框架React入门之九】button简单介绍(iOS平台)-goodmao
- windows下Qt与lua结合简单介绍