在Java TreeMap上我应该在清除之前检查大小吗?

sim*_*eer 3 java

我以为我可以打电话给清楚,而不是

if (tmap.size() > 0) {
    tmap.clear();
}
Run Code Online (Sandbox Code Playgroud)

或者更有效率?

dav*_*xxx 10

你什么TreeMap.clear()也得不到,因为在开销方面没有任何意义:

public void clear() {
    modCount++;
    size = 0;
    root = null;
}
Run Code Online (Sandbox Code Playgroud)

因此,只需简单地阅读您的代码即可 tmap.clear();

编写JDK集合类以尽可能地进行优化.
所以你通常不需要担心基本的优化,因为这些都必须完成.
例如,查看HashMap.clear()逻辑,clear()操作需要更多开销:清除表(桶).
因此,在执行以下操作之前,将检查地图的大小:

public void clear() {
    Node<K,V>[] tab;
    modCount++;
    if ((tab = table) != null && size > 0) {
        size = 0;
        for (int i = 0; i < tab.length; ++i)
            tab[i] = null;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 即使它确实有所不同,我希望该库的作者可以在其实现中使用`if(size()> 0)`开始实现 - 所以你仍然可以通过调用来做正确的事情`clear()`... (2认同)