我有一个ArrayList:
List<Integer> array = new ArrayList<Integer>(M);
在我的代码中的某个时刻,我在此数组列表中的特定索引处添加一个新的整数值:
array.add(index, value);
文档说明了该方法:
将指定元素插入此列表中的指定位置(可选操作)。将当前位置的元素(如果有)和右侧的任何后续元素移位(将其添加到索引中)。
这很好,因为这是我真正想做的事情。问题是,每次我这样做,我的数组的大小增加1.也就是说,最初我有一个大小为M的数组用零填充。当我在索引0处添加第一个值时,我在那里有这个值并且M值为零,从而产生一个大小为M + 1的数组。当我在索引0处添加第二个值时,我在索引0处有这个值,前一个值在索引1处向右移动,M值为零,从而产生大小为M + 2的数组等。
我的问题是,如何在我的arraylist的特定索引处添加元素(在我的情况下,在索引0处)将前面的元素移动1个索引而不超过arylylist的预定义容量?
(我不得不说,ArrayList是Java中最常见的结构之一,但对我来说却是最令人困惑的...)
编辑:我必须注意,最初我使用for循环填充我的arraylist,其中M值为零,因此我有例如对于M = 5,像这样的arraylist。 [0,0,0,0,0]
答案 0 :(得分:1)
当您想在 arraylist 中的特定索引处添加值而不增加其长度时,最好使用 arraylist 中的 set 方法。 采用 ArrayList.set(int index, E 元素)
答案 1 :(得分:0)
您可以删除列表的最后一个元素,然后插入。这将保持大小不变