鍍金池/ 問答/Java  網絡安全  HTML/ Java中l(wèi)ist的addAll()方法的時間開銷

Java中l(wèi)ist的addAll()方法的時間開銷

public boolean addAll(Collection<? extends E> c) {
    Object[] a = c.toArray();
    int numNew = a.length;
    ensureCapacityInternal(size + numNew);  // Increments modCount
    System.arraycopy(a, 0, elementData, size, numNew);
    size += numNew;
    return numNew != 0;
}

我看到說addAll()的時間開銷是和插入數量正比的,我覺得是不管插入多少都應該是一樣的啊,還是說System.arraycopy這個native方法有什么玄機,請大神解釋一下

回答
編輯回答
蔚藍色

插入時要生成新的數組,并有拷貝操作,數組越大,需要的時間自然越長。

2017年3月1日 11:27