哪个更有效率?使用removeAll()或创建新的arraylist使用相同的arraylist

时间:2017-09-26 07:01:38

标签: java selenium-webdriver collections

我使用arraylist比较我的selenium webdriver脚本中的元素,我在其中比较了两个不同页面的元素。

那么哪一个更有效率?

使用相同的arraylist或创建新的arraylist?

1 个答案:

答案 0 :(得分:0)

removeAll()的源代码(如AbstractCollection中所定义):

public boolean removeAll(Collection<?> c) {
    Objects.requireNonNull(c);
    boolean modified = false;
    Iterator<?> it = iterator();
    while (it.hasNext()) {
        if (c.contains(it.next())) {
            it.remove();
            modified = true;
        }
    }
    return modified;
}

clear()的源代码(如ArrayList中所定义):

public void clear() {
    modCount++;

    // clear to let GC do its work
    for (int i = 0; i < size; i++)
        elementData[i] = null;

    size = 0;
}

clear()要快得多,因为它不必处理所有这些额外的方法调用,但是我认为实例化一个新的ArrayList是最有效的,特别是在一个非常大的ArrayList中(不需要)迭代集合)。