List.add(index,element)在Java内部如何工作?

时间:2019-12-14 02:18:13

标签: java arraylist collections

Java API Docthis post中所述,list.add(index,element)导致给定元素被添加到给定索引处。在此过程中,随后的列表项向右移动一个位置(如API文档中所述在其索引中添加一个

我的问题是这实际上如何发生?

假设我们有一个包含100个元素的ArrayList,我们说xml2,考虑到基础数据结构是一个数组,那么API将如何完成此操作?

更具体地说:是否会将所有现有的100个元素复制到其紧邻的正确位置?还是有一种更有效的处理方式?

1 个答案:

答案 0 :(得分:1)

对于ArrayList,元素确实会向上移动。这只是线性内存访问,因此实际上出奇的快。

使用ArrayDeque(使用循环缓冲区)可以更快地插入前端。也就是说,它不仅跟踪最后一个元素索引,而且还跟踪第一个元素索引和数组。不幸的是,ArrayDeque并没有实现它可能应做的List

非常慢的LinkedList可以快速删除第一个元素,但通常非常慢。

所有这些类的源代码都是免费提供的,并且不太复杂。