欢迎光临散文网 会员登陆 & 注册

马老师机器学习和算法体系

2022-10-07 23:39 作者:娜娜络络  | 我要投稿

int oldCapacity = oldTable.length;    // 新容量,扩大两倍    int newCapacity = oldCapacity << 1;    // 新的扩容阀值    threshold = (int)(newCapacity * loadFactor);    // 创建新的数组    HashEntry<K,V>[] newTable = (HashEntry<K,V>[]) new HashEntry[newCapacity];    // 新的掩码,默认2扩容后是4,-1是3,二进制就是11。    int sizeMask = newCapacity - 1;    for (int i = 0; i < oldCapacity ; i++) {        // 遍历老数组        HashEntry<K,V> e = oldTable[i];        if (e != null) {            HashEntry<K,V> next = e.next;            // 计算新的位置,新的位置只可能是不便或者是老的位置+老的容量。            int idx = e.hash & sizeMask;            if (next == null)   //  Single node on list                // 如果当前位置还不是链表,只是一个元素,直接赋值                newTable[idx] = e;            else { // Reuse consecutive sequence at same slot                // 如果是链表了                HashEntry<K,V> lastRun = e;                int lastIdx = idx;                // 新的位置只可能是不便或者是老的位置+老的容量。                // 遍历结束后,lastRun 后面的元素位置都是相同的                for (HashEntry<K,V> last = next; last != null; last = last.next) {                    int k = last.hash & sizeMask;                    if (k != lastIdx) {                        lastIdx = k;                        lastRun = last;                    }                }


马老师机器学习和算法体系的评论 (共 条)

分享到微博请遵守国家法律