HashMap 数据结构解析:算法
HashMap内部使用hash表(本质是一个数组见图一)数组
HashMap使用hash算法计算获得存放的索引位置,一次来加快查询速度,(比ArrayList还要快)数据结构
hash值相同不能表示key彻底相同,须要调用equals再次确认blog
若是key的hash值相同可是equals判断不相同,那么使用树结构或者链表来存储这些hash相同的元素,(具体使用哪一种根据当前map中元素的数量,超过64个元素则使用树结构)索引
代码在putVal方法的最后,当添加元素后的大小超过阈值时则直接扩容hash表hash
总结:List
HashMap是使用Hash表(本质是数组)来存储数据,map
当数据Hash值相同可是equals判断不一样时使用链表(添加快,查询慢)方法
当元素数量超过64时则将链表转为数结构(添加慢,查询快)im