HashMap之数组table的疑惑

Cc_okone 发布于 2013/08/01 14:02
阅读 246
收藏 0

谈起HashMap,我相信大家都基本上有了共识,这里我提出一个大家可能没注意到的地方,比如jdk提供的hashmap中,函数clear的实现如下:

    /**
     * Removes all of the mappings from this map.
     * The map will be empty after this call returns.
     */
    public void clear() {
        modCount++;
        Entry[] tab = table;
        for (int i = 0; i < tab.length; i++)
            tab[i] = null;
        size = 0;
    }

这里的tab为什么会出现呢,table的定义:transient Entry[] table;

是考虑到同步机制么?跪求众人给出自己的意见,我相信SUN不会脱裤子放屁~

加载中
0
Cc_okone
Cc_okone
要石沉大海了么...
0
顺其自然001
顺其自然001

他只是 Entry[]数组的名称啊?有关系么?

他只是名称,不是Table类型。。。。

顺其自然001
顺其自然001
回复 @Cc_okone : 新定义的变量在栈顶,出栈快,局部变量,用完就销毁,也不额外占用内存。不一定正确,还是等大牛来解答吧。
Cc_okone
Cc_okone
回复 @然则何时而乐 : 额,能说得清楚点么,这是如何能提高速度的
顺其自然001
顺其自然001
回复 @Cc_okone : 你说的是Entry[] tab = table;这段代码, 我理解是为了加快运行速度,不是为了同步。
Cc_okone
Cc_okone
额,你可能没明白我的意思,这里已经定义了一个数组table,为什么还要把它赋给tab,你不觉得有点怪么
0
kenping
kenping

我这里看到的跟你不一样,这个是Android源码里的

@Override public void clear() {
    if (size != 0) {
        Arrays.fill(table, null);
        entryForNullKey = null;
        modCount++;
        size = 0;
    }
}

Cc_okone
Cc_okone
额,说明我的代码不是安卓开发环境的JDK~
返回顶部
顶部