对于开发者而言map表层是键值对的形式,且键唯一。
底层数据结构参考源码如下:
如代码所示:Map中的key,value则以Entry的形式存放在数组中
下面以put为例:对put过程实现做一个完整的解析。
1 调用put
2 has算法决定元素应该放在table的那个位置
3
通过table[i]获取新Entry的值, 如果值不为空,则判断key的hash值和equals来判断新的Entry和旧的Entry值是否相同, 如果相同则覆盖旧Entry的值并返回。
往数组上添加新的Entry。
添加Entry时,当table的容量大于theshold((int)Math.min(capacity * loadFactor, MAXIMUM_CAPACITY + 1)), 则扩容!