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

Java 集合與迭代器:動態資料結構的核心抽象

     編輯:Java 相關知識

為什麼需要集合?

解決問題時,我們往往無法預知需要多少物件、它們的存活時間。陣列雖能儲存物件,但大小固定、操作僵化。集合(Collection,又稱容器)應運而生:它們本身也是物件,內部持有其他物件的參考,並能自動擴充容量,無需預先知道元素數量。

主流語言的集合庫

  • C++:標準模板庫(STL)
  • Java:標準類別庫(java.util)
  • Smalltalk:極完整的集合體系
  • Object Pascal:視覺元件庫(VCL)

不同庫提供不同類型的集合:Vector(動態陣列)、LinkedList(鏈結串列)、HashSet、TreeMap、Queue、Stack 等,各有優勢,開發者可依需求選擇。

迭代器:統一遍歷介面

集合提供 add()、push() 等寫入方法,但讀取方式因實作而異。迭代器(Iterator)解決了這個問題:

  • 它是一個物件,負責選擇集合內元素並逐一提供給使用者;
  • 提供一層抽象,將集合內部結構與遍歷程式碼解耦;
  • 讓集合表現為「簡單序列」,無論底層是陣列、鏈結串列還是樹狀結構,遍歷程式碼皆相同。

Java 早期使用 Enumeration,1.2 版引入功能更強的 Iterator(支援移除操作等)。

選擇集合的兩大考量

1. 介面與外部行為不同

Stack(LIFO)、Queue(FIFO)、Set(不重複)、List(有序)提供不同語意,依問題選擇。

2. 特定操作的效率差異

以 Vector vs LinkedList 為例:

操作Vector(動態陣列)LinkedList(鏈結串列)
隨機存取O(1) 極快O(n) 需遍歷
中間插入/刪除O(n) 需搬移O(1) 僅調整指標

設計初期可先用 List 介面,效能調優時再具體化為 ArrayList 或 LinkedList,因迭代器抽象,程式碼幾乎無需修改。

懶惰求值:效能優化技巧

在 StrSortVector 範例中,使用 sorted 標記:只有當真正需要讀取時才排序,避免每次 add() 都排序。這種「除非必要不計算」的策略稱為懶惰求值,同樣適用於初始化(懶惰初始化)。

總結

集合與迭代器是 Java 處理動態資料的核心工具。善用介面導向設計、理解底層資料結構特性、靈活切換實作,是寫出高效、可維護程式的關鍵。

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