所以是怎么用hashcode来检索的呢
Topic source计算key的hash值,存放对应位置
计算key的hash值,去对应位置取value
好比去图书馆借书,书名是key
1.只知道书名,一个挨着一个书架找
2.通过图书馆查询,知道了这本书所在区域及编号(索引),就可以直接去把书取出来
我之前也是这么认为的:
例如从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。
- 1
黯然
把map看作一张具有一对一对应映射关系的表,在运行的时候是对这个表进行遍历检索么?如果是这样岂不是差不多,还是说内部进行分块,更或者有什么更快的检索方式?