目录
HashMap底层原理:
1. HashMap概述:
HashMap是一个散列桶(数组和链表),它存储的内容是键值对(key-value)映射
HashMap采用了数组和链表的数据结构,能在查询和修改方便继承了数组的线性查找和链表的寻址修改
HashMap是非synchronized,所以HashMap很快
HashMap可以接受null键和值,而Hashtable则不能(原因就是equlas()方法需要对象,因为HashMap是后出的API经过处理才可以)
put方法
-
调用哈希函数获取
Key对应的hash值,然后结合数组长度再计算其数组下标; -
如果没有出现哈希冲突,则直接放入数组;如果出现哈希冲突,则以链表的方式放在链表后面;
-
如果链表长度超过阀值(
TREEIFYTHRESHOLD==8),就把链表转成红黑树,链表长度低于6,就把红黑树转回链表; -
如果结点的
key已经存在,则替换其value即可; -
如果集合中的键值对大于12,调用
resize方法进行数组扩容。 -

get方法
计算需获取数据的hash值(计算过程跟put一样),计算存放在数组table中的位置(计算过程跟put

最低0.47元/天 解锁文章
1401

被折叠的 条评论
为什么被折叠?



