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

Java 集合框架進階:Iterator、List、Set、HashSet、TreeSet 核心機制與選型指南

     編輯:Java 綜合教學

Java 集合框架進階:Iterator、List、Set、HashSet、TreeSet 核心機制與選型指南

一、迭代器模式

  • Collection 定義 iterator(),所有子類統一遍歷介面
  • 兩種寫法:

// 推薦:for-each 隱式迭代器(Java 5+)
for (String s : list) { ... }

// 顯式:需手動處理併發修改異常
Iterator it = list.iterator();
while (it.hasNext()) { String s = it.next(); }
  • 替代舊式 Enumeration,支援 remove()
  • next() 返回 Object 需轉型(泛型後自動推導)

二、List 介面:有序、可重複

特有方法(支援索引操作)

  • add(index, e), addAll(index, c)
  • remove(index), set(index, e), get(index)
  • indexOf(o), lastIndexOf(o), subList(from, to)

三大實現對比

實現類資料結構同步查詢增刪適用場景
ArrayList動態陣列否快 O(1)慢 O(n)隨機存取頻繁、末尾增刪
LinkedList雙向鏈表否慢 O(n)快 O(1)頻繁頭尾/中間增刪、佇列/棧
Vector動態陣列是快慢舊版遺留,已被 ArrayList+同步包裝取代

LinkedList 額外方法


addFirst/Last, offerFirst/Last, getFirst/Last, peekFirst/Last, removeFirst/Last, pollFirst/Last

三、Set 介面:無序、不可重複

HashSet

  • 底層 HashMap,O(1) 存取
  • 唯一性判斷:hashCode() 不同 → 直接存入;相同 → 再比 equals()
  • 務必重寫 hashCode 與 equals

TreeSet

  • 底層紅黑樹,有序(自然序或定製序)
  • 唯一性判斷:比較器返回 0 視為重複
  • 兩種排序方式:

// 1. 實體實作 Comparable
class Person implements Comparable {
    public int compareTo(Person o) { return this.age - o.age; }
}

// 2. 傳入 Comparator
new TreeSet<>((a,b) -> b.age - a.age); // 降序

LinkedHashSet

  • HashSet + 雙向鏈表,維護插入順序

四、選型口訣


需要唯一? → Set
  ├ 需要排序? → TreeSet (Comparator/Comparable)
  ├ 需要插入序? → LinkedHashSet
  └ 否 → HashSet (重寫 hashCode/equals)

不需要唯一? → List
  ├ 頻繁增刪? → LinkedList
  └ 否 → ArrayList

五、命名規律記憶法

  • 後綴 = 體系:ArrayList/LinkedList → List;HashSet/TreeSet → Set
  • 前綴 = 結構:Array → 陣列(查詢快、有索引);Link → 鏈表(增刪快、首尾操作);Hash → 雜湊(唯一、重寫 hashCode/equals);Tree → 紅黑樹(排序、Comparable/Comparator)

掌握集合框架核心特性,是寫出高效、正確 Java 程式的基礎。

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