
hashMap
ChrylZzz
博客用于记录学习
展开
-
HashMap 的长度为什么是2的幂次方
为了能让 HashMap 存取高效,尽量较少碰撞,也就是要尽量把数据分配均匀。我们上面也讲到了过了,Hash 值的范围值-2147483648到2147483647,前后加起来大概40亿的映射空间,只要哈希函数映射得比较均匀松散,一般应用是很难出现碰撞的。但问题是一个40亿长度的数组,内存是放不下的。所以这个散列值是不能直接拿来用的。用之前还要先做对数组的长度取模运算,得到的余数才能用来要存放的位...原创 2020-03-18 17:10:35 · 879 阅读 · 0 评论 -
HashMap
1.HashMap用什么数据结构实现的? 答:数组。什么样的数组?答:Node[] table这样的。Node是什么?答:看下图: 也就是说这个数组每个元素都是个单向链表。 2.HashMap的get过程是? 答:先得到key的hash值,再把这个hash值与length-1按位与(取余),得到table数组的下标。取出这个下标值的key,与传入的key比较,如果相同那就是这个了...原创 2019-03-17 22:49:18 · 124 阅读 · 0 评论