首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 綜合教學

Java 進階:List 集合 add 與 set 方法原理詳解

     編輯:Java 綜合教學

Java 進階:List 集合 add 與 set 方法原理詳解

java.util.List 接口提供了有序、可重複的集合操作。其中 add 用於插入元素,set 用於替換指定位置元素。本文通過源碼級分析,闡述兩種方法的重載形式、底層實現邏輯及性能特徵。

add 方法:兩種插入模式

1. 尾部追加 boolean add(E e)

將元素插入列表末尾。若列表結構發生變化(如擴容),返回 true;固定長度列表可能返回 false。

List<String> list = new ArrayList<>();
list.add("保護環境");
list.add("愛護地球");
list.add("從我做起");

// 遍歷輸出
for (int i = 0; i < list.size(); i++) {
    System.out.println(list.get(i));
}

2. 指定位置插入 void add(int index, E element)

在 index 處插入元素,原位置及後續元素索引 +1。索引從 0 開始,超出範圍拋出 IndexOutOfBoundsException。

ArrayList 底層邏輯:
1. 檢查容量,不足則擴容(1.5 倍)
2. System.arraycopy 將 index 及之後元素向後移動一位
3. 在 index 處寫入新元素
4. size++

set 方法:原地替換

void set(int index, E element)

將 index 處元素替換為 element,返回被替換的舊元素。不改變列表長度,時間複雜度 O(1)。同樣需檢查索引合法性。

性能對比與選型建議

操作ArrayListLinkedList
尾部 addO(1) 攤銷O(1)
中間 addO(n) 需移動數組O(n) 需遍歷定位
setO(1)O(n) 需遍歷定位

頻繁中間插入刪除場景推薦 LinkedList;隨機訪問、尾部追加為主則選 ArrayList。

List 結構示意圖

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved