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

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

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;
}

我看到說(shuō)addAll()的時(shí)間開銷是和插入數(shù)量正比的,我覺(jué)得是不管插入多少都應(yīng)該是一樣的啊,還是說(shuō)System.arraycopy這個(gè)native方法有什么玄機(jī),請(qǐng)大神解釋一下

回答
編輯回答
蔚藍(lán)色

插入時(shí)要生成新的數(shù)組,并有拷貝操作,數(shù)組越大,需要的時(shí)間自然越長(zhǎng)。

2017年3月1日 11:27