1. 將元素添加到列表的中間(或開頭)

如果我們想在列表中間插入一個元素,列表內部會發生以下情況。

假設我們有一個包含 11 個元素的列表:

將元素添加到列表的中間(或開頭)

我們想將數字 10,000 插入到索引 5 處的列表中。為此,我們只需要執行:

list.add(5, 10000);

哪裡listArrayList變量。該add(int index, type value)方法將值 10000 添加到列表中的位置 5。這是方法中發生的事情add()

步驟 1:數組的所有元素,從第 5 個位置開始,將向數組末尾移動(複製)1 個元素:

將元素添加到列表的中間(或開頭) 1

請注意,數組的第 5 個和第 6 個單元格中的元素現在相同。

第 2 步:將值 10,000 寫入第 5 個單元格:

將元素添加到列表的中間(或開頭) 2

現在列表包含數組的所有元素,第五個單元格包含數字 10,000。正是我們想要的。



2. 從列表中刪除一個元素

從列表中刪除元素與插入元素類似,但過程相反。

讓我們從列表中刪除第三個元素。為此,我們需要執行:

list.remove(3);

以下是 remove() 方法中發生的事情:

第 1 步:數組的元素,從第 4 個位置開始,將向數組的開頭移動(複製)1 個元素:

從列表中刪除元素

第 2 步:變量的值size將減 1。

從列表中刪除一個元素 2

請注意,數組末尾有一些灰色值。從技術上講,這些都是垃圾。為了不干擾垃圾回收,它們需要被移除。

第三步:清理垃圾

從列表中刪除一個元素 3



3. 在 Java 中使用列表的實際例子

讓我們寫一些使用列表的例子:

我們將列出 1 到 20 範圍內的所有偶數:

代碼 筆記
ArrayList<Integer> list = new ArrayList<Integer>();

for (int i = 1; i <= 20; i++)
   if (i%2 == 0)
      list.add(i);
創建一個列表對象

循環遍歷所有索引1如果20
索引可以被2無餘數整除,
則將其添加到列表中

現在讓我們在屏幕上顯示列表的所有元素:

代碼 筆記
ArrayList<Integer> list = new ArrayList<Integer>();

for (int i = 1; i <= 20; i++)
   if (i%2 == 0)
      list.add(i);

for (int i = 0; i < list.size(); i++)
   System.out.println(list.get(i));
創建一個列表對象
循環遍歷所有索引1如果20

數字可以被2無餘數整除,
則將其添加到列表中

從零循環到列表的大小
在屏幕上顯示每個元素

刪除元素:

現在讓我們刪除所有可被 4 整除的元素。請注意,從列表中刪除一個元素後,其餘元素的位置會立即改變。

代碼 筆記
ArrayList<Integer> list = new ArrayList<Integer>();

for (int i = 1; i <= 20; i++)
   if (i%2 == 0)
      list.add(i);

for (int i = 0; i < list.size(); i++)
   if (list.get(i)%4 == 0)
   {
      list.remove(i);
      i--;
   }
創建一個列表對象

循環遍歷所有索引1如果20
索引可以被2無餘數整除,
則將其添加到列表中

從零循環到列表的大小
如果列表的元素可以被4無餘數整除:

a)刪除元素
b) 減少i計數器,以便我們在循環的下一次迭代中獲得相同的索引

假設您需要從列表中刪除最後 3 個元素。

以下是錯誤做法:

代碼 筆記
ArrayList<Integer> list = new ArrayList<Integer>();

for (int i = 1; i <= 20; i++)
   if (i%2 == 0)
      list.add(i);

int n = list.size();
list.remove(n - 3);
list.remove(n - 2);
list.remove(n - 1);
創建一個列表對象

列表有10個元素:2, 4, 6, ... 20



n = 10
n - 3 = 7(列表還剩9個元素)
n - 2 = 8(列表還剩8個元素)
n - 1 = 9(列表還剩7個元素)

刪除第 7 個和第 8 個元素後,列表中將只剩下 8 個元素。這意味著將無法刪除第 9 個元素——程序中將發生錯誤。

這是刪除元素的正確方法:

選項1 選項 2
int n = list.size();
list.remove(n - 3);
list.remove(n - 3);
list.remove(n - 3);
int n = list.size();
list.remove(n - 1);
list.remove(n - 2);
list.remove(n - 3);

元素需要從末尾或另一個一致的位置刪除,因為元素在每次刪除操作後都會移動一個。