在不增加ArrayList容量的情况下在ArrayList的特定索引处插入对象-Java



我有一个ArrayList:

List<Integer> array = new ArrayList<Integer>(M);

在我的代码中的某个时刻,我在特定索引的数组列表中添加了一个新的整数值:

array.add(index, value);

文件中说明了这种方法:

在此列表中的指定位置插入指定元素(可选操作)。将当前位于该位置的元素(如果有)和任何后续元素向右移动(在其索引中添加一个)。

这很好,因为这正是我真正想做的。问题是,每当我这样做时,我的数组大小都会增加1。也就是说,最初我有一个用零填充的M大小的数组。当我在索引0处添加第一个值时,我在那里有这个值和M个零值,得到一个大小为M+1的数组。当我在索引0处加上第二个值时,我的索引0处有这个值,前一个值在索引1处向右移动,M个零值,导致大小为M+2等的数组。

我的问题是,如何在数组列表的特定索引处添加元素(在我的情况下,在索引0处),将之前的元素移动1个索引,而不超过数组列表的预定义容量?

(我不得不说,ArrayList是Java中最常见的结构之一,也是我最困惑的结构之一…)

编辑:我必须注意,最初我使用for循环用M个零值填充数组列表,因此,例如,对于M=5,我有一个这样的数组列表。[0,0,0,0,0]

您可以删除列表的最后一个元素,然后插入。这将保持的大小不变

当您想在不增加其长度的情况下在arraylist中的特定索引处添加值时,最好使用arraylist的set方法。使用ArrayList.set(int索引,E元素)

您必须使用set方法,而不是添加方法,例如array.set(index, value);

最新更新