Discuss / Java / 所以是怎么用hashcode来检索的呢

所以是怎么用hashcode来检索的呢

Topic source

黯然

#1 Created at ... [Delete] [Delete and Lock User]

把map看作一张具有一对一对应映射关系的表,在运行的时候是对这个表进行遍历检索么?如果是这样岂不是差不多,还是说内部进行分块,更或者有什么更快的检索方式?

保持热爱

#2 Created at ... [Delete] [Delete and Lock User]

计算key的hash值,存放对应位置

计算key的hash值,去对应位置取value

好比去图书馆借书,书名是key

1.只知道书名,一个挨着一个书架找

2.通过图书馆查询,知道了这本书所在区域及编号(索引),就可以直接去把书取出来

保持热爱

#3 Created at ... [Delete] [Delete and Lock User]

这两种方式工作量比起来,差的不是一丁半点

0

#4 Created at ... [Delete] [Delete and Lock User]

我之前也是这么认为的:

例如从HashMap中取一个根据key取出一个value,内部应该是遍历所有的key吗?不然怎么知道的。

认真看完这章后:

1、HashMap是通过空间换时间的结构。
2、HashMap内部是一个数组,通过计算key的hash值决定把key放在数组的哪一个位置。下次可以通过计算key的hash定位到value(不理解的话可以想象成类似通过下标引索数组直接取出元素)

int[] is = {1, 2, 3};
System.out.println(is[0]); // 通过下标引索直接取出

3、我们也可以通过hash函数和数组直接实现一个HashMap。

有hashcode啊,


  • 1

Reply