簡體   English   中英

在 ArrayList 的特定索引處插入 Object 而不增加 ArrayList - Java 的容量

[英]Inserting Object at Specific Index of ArrayList Without Growing the Capacity of that ArrayList - Java

我有一個 ArrayList:

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

在我的代碼中的某個時刻,我在這個數組列表的特定索引處添加了一個新的 integer 值:

array.add(index, value);

該文檔針對該方法說:

在此列表中的指定 position 處插入指定元素(可選操作)。 將當前位於該 position(如果有)的元素和任何后續元素向右移動(將其索引加一)。

這很好,因為那是我真正想做的。 問題是每當我這樣做時,數組的大小都會增加 1。也就是說,最初我有一個大小為 M 的數組,其中填充了零。 當我在索引 0 處添加第一個值時,我在那里有這個值和 M 個零值,導致大小為 M + 1 的數組。當我在索引 0 處添加第二個值時,我在索引 0 處有這個值,前一個值在索引 1 處向右移動,M 為零值,導致大小為 M + 2 的數組等。

我的問題是,如何在不超過 arraylist 的預定義容量的情況下,在我的 arraylist 的特定索引處(在我的例子中,在索引 0 處)添加一個元素,將前面的元素移動 1 個索引?

(我不得不說,ArrayList 是 Java 中最常見的結構之一,但也是最讓我困惑的結構之一......)

編輯:我必須注意,最初我使用 for 循環用 M 零值填充我的 arraylist,因此我有例如 M = 5 arraylist 這樣的。 [0, 0, 0, 0, 0]

您可以刪除列表的最后一個元素,然后插入。 這將保持大小不變

當您想在 arraylist 中的特定索引處添加值而不增加其 length 時,最好使用 arraylist 中的 set 方法。 使用 ArrayList.set(int index, E element)

您必須使用 set 方法而不是 add 方法,即array.set(index, value); .

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM