小编Run*_*hen的帖子

为什么 Java HashMap 实现在调整大小时使用 transfer() 而不是 put()?

在 Java 7HashMap实现中resize,它调用transfer将旧元素移动到新表的方法。为什么他们编写了一个新方法而不是put使用所有旧元素进行调用?由于阈值,不会再次触发调整大小。调用put使代码更清晰。

/**
 * Transfers all entries from current table to newTable.
 */
void transfer(Entry[] newTable) {
    Entry[] src = table;
    int newCapacity = newTable.length;
    for (int j = 0; j < src.length; j++) {
        Entry<K,V> e = src[j];
        if (e != null) {
            src[j] = null;
            do {
                Entry<K,V> next = e.next;
                int i = indexFor(e.hash, newCapacity);
                e.next = newTable[i];
                newTable[i] = e;
                e = next; …
Run Code Online (Sandbox Code Playgroud)

java hashmap

4
推荐指数
1
解决办法
72
查看次数

标签 统计

hashmap ×1

java ×1