有序:元素保留其插入順序。
靈活:允許重複,這樣你就可以像老闆的提醒一樣重複。
最適合:快速隨機存取和迭代。
缺點:插入和刪除速度慢(因為元素需要移動)。
用例:當您需要頻繁存取元素時,例如在媒體播放器中取得視訊畫面。
List<String> arrayList = new ArrayList<>(); arrayList.add("First"); arrayList.add("Second");
記憶體佈局:ArrayList 維護一個連續的記憶體區塊,當超出其容量時,會調整大小 50% 或更多。 連結列表
支援:雙向鍊錶。
最適合:頻繁插入和刪除。
缺點:由於指標遍歷,存取時間較慢。
用例:實作經常新增或刪除歌曲的播放清單。
List<String> linkedList = new LinkedList<>(); linkedList.add("Node1"); linkedList.add("Node2");
記憶體佈局:LinkedList 使用非連續內存,每個節點都指向其上一個和下一個節點。 CopyOnWriteArrayList
特殊用途:ArrayList 的線程安全變體。
工作原理:在每次修改時建立底層陣列的新副本。
最適合:讀取次數遠多於寫入的場景,例如快取經常存取的資料。
缺點:佔用記憶體且更新速度慢。
d. 向量
舊版:在 Java 1.0 中引入。
執行緒安全:同步開銷使其比現代替代方案慢。
有趣的事實:就像 List 的「爸爸笑話」一樣,不是很有趣,但仍然存在。
List<String> arrayList = new ArrayList<>(); arrayList.add("First"); arrayList.add("Second");
List<String> linkedList = new LinkedList<>(); linkedList.add("Node1"); linkedList.add("Node2");
注意:這會傳回固定大小的列表,因此您無法新增或刪除元素。
List<String> list = new ArrayList<>();
不可變意味著沒有 add()、remove() 或clear()——就像那個不讓任何人碰他們的草坪的鄰居一樣。
List<String> list = Arrays.asList("A", "B", "C");
b. add(int 索引, E 元素)
在指定索引處插入一個元素,移動後續元素。
List<String> immutableList = List.of("X", "Y", "Z");
c.刪除(int索引)
刪除指定索引處的元素。
list.add("Element");
d.取得(int索引)
檢索指定索引處的元素。
list.add(1, "Middle");
e. set(int 索引, E 元素)
用新元素取代指定位置的元素。
list.remove(0);
String element = list.get(2);
調整大小時:
list.set(1, "UpdatedElement");
b. LinkedList 內部結構 LinkedList 中的每個元素(節點)包含:
資料
指向下一個節點的指標
指向前一個節點的指標(雙向鍊錶)
遍歷速度較慢,因為存取索引需要迭代節點。
圖表 :
[Element1] [Element2] [Element3] [Null] ... [Null]
[Element1] [Element2] [Element3] [NewElement] [Null] ... [Null]
搜尋演算法 :
線性搜尋:O(n) – 掃描每個元素。
二分查找:O(log n) – 需要一個排序清單。
List<String> arrayList = new ArrayList<>(); arrayList.add("First"); arrayList.add("Second");
List<String> linkedList = new LinkedList<>(); linkedList.add("Node1"); linkedList.add("Node2");
允許重複:絕對。
頻繁存取操作:前往ArrayList。
頻繁修改:前往LinkedList。
List<String> list = new ArrayList<>();
List<String> list = Arrays.asList("A", "B", "C");
List<String> immutableList = List.of("X", "Y", "Z");
list.add("Element");
使用泛型 :總是指定類型以避免 ClassCastException。
不要在循環中使用 new ArrayList() :重複使用實例或正確管理以避免 OutOfMemoryError。
徹底理解List可以讓你寫出高效率、可擴充、可讀的Java程式。這就像在學習美食食譜之前掌握烹飪的基礎知識一樣,您將避免燒毀程式碼(和烤麵包)。隨意使用範例,建立自訂場景,並擁抱 List 的強大功能。請記住,經驗豐富的開發人員知道每個元素都很重要,無論是在生活中還是在清單中。
現在繼續前進,用你新掌握的清單來征服你的程式設計挑戰,永遠不要再讓你的陣列支配你!
以上是Java 清單終極指南:您需要了解的一切的詳細內容。更多資訊請關注PHP中文網其他相關文章!