一.了解HashMap的存储结构
HashMap内部数据结构使用数组+链表+红黑树进行存储。数组类型为Node[], 每个 Node都
保存了某个KV键值对元素的key、value 、hash 、next 等值。于next的存在,所以每个Node对象都是一个单向链表中的组成节点。如图中代码所示:
HashMap的底层采用的存储方式:数组+链表+红黑树,当新添加一个键值对元素时,通过该元素的key的hash 值,计算该元素在数组中应该保存的下标位置。如果该下标位置如果已经存在其它Node 对象(产生哈希冲突) , 则采用链地址法处理,即将新添加的键值对元素将以链表形式存储。当链表的长度超过8并且数组长度大于64时,为了避免查找搜索性能下降,该链表会转换成一个红黑树。如图所示:
二.HashMap保存一个键值对的方法
HashMap调用put()方法传把进来的Key和Value传递给putVal()得到返回的值
putVal()方法: