Java中list的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方法有什么玄机,请大神解释一下

阅读 3.8k
1 个回答

插入时要生成新的数组,并有拷贝操作,数组越大,需要的时间自然越长。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题