“b96021bc29fa6bc24a9768916736523bca95d9f5”上不存在“projects/BETTERHH”
提交 a3ddd083 编写于 作者: 檀越@新空间's avatar 檀越@新空间 🐭

fix:map源码学习

上级 ee1852ec
...@@ -747,9 +747,14 @@ public class HashMap<K, V> extends AbstractMap<K, V> ...@@ -747,9 +747,14 @@ public class HashMap<K, V> extends AbstractMap<K, V>
//在新的Node数组中,将该红黑树进行拆分 //在新的Node数组中,将该红黑树进行拆分
//如果拆分后的子树过小(子树的节点小于等于6个),则取消树化,即将其转为链表结构 //如果拆分后的子树过小(子树的节点小于等于6个),则取消树化,即将其转为链表结构
((TreeNode<K, V>) e).split(this, newTab, j, oldCap); ((TreeNode<K, V>) e).split(this, newTab, j, oldCap);
} else {//如果是链表的情况下,则进行下面的链表数据转移的操作 } else {
Node<K, V> loHead = null, loTail = null;//低头尾 //新的位置只有两种可能:原位置,原位置+老数组长度
Node<K, V> hiHead = null, hiTail = null;//高头尾 //把原链表拆成两个链表,然后再分别插入到新数组的两个位置上
//不用多次调用put方法
//如果是链表的情况下,则进行下面的链表数据转移的操作
//分别是原位置不变的链表和原位置+原数组长度位置的链表
Node<K, V> loHead = null, loTail = null;
Node<K, V> hiHead = null, hiTail = null;
Node<K, V> next; Node<K, V> next;
do { do {
//对链表进行遍历,把链表中的节点分成两个类别,一类是需要更换数组下标的,另一类是不需要的 //对链表进行遍历,把链表中的节点分成两个类别,一类是需要更换数组下标的,另一类是不需要的
......
因为 它太大了无法显示 source diff 。你可以改为 查看blob
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册