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

Java 集合框架完整解析:核心介面、實作類別、演算法、Iterator/Comparator 與遍歷最佳實務

     編輯:Java 程式設計入門

Java 集合框架完整解析

集合框架為操作物件群組提供統一架構,設計目標:高效能、高互通性、易擴展。核心包含介面(抽象資料型別)、實作類別(可重用資料結構)、演算法(搜尋、排序等多型方法)。


集合框架體系架構

集合框架架構圖

位於 java.util 套件,使用時需匯入。


核心集合介面

介面描述
Collection最基本集合介面,代表一組 Object;無直接實作類,只有子介面(List、Set)
List有序 Collection,可精確控制插入位置、索引存取、允許重複
Set不保存重複元素,行為異於 Collection
SortedSet繼承 Set,保持有序
Map鍵值對映射,鍵唯一
Map.EntryMap 內部類,描述單一鍵值對
SortedMap繼承 Map,鍵保持升序
Enumeration傳統介面,已被 Iterator 取代

Set vs List 差異

  • Set:無序、不重複、查找效率低、增刪效率高(HashSet、TreeSet)
  • List:有序、可重複、動態增長、查找快、增刪慢(ArrayList、LinkedList、Vector)

標準實作類別(集合類)

類別描述
AbstractCollection實作大部分 Collection 介面
AbstractList繼承 AbstractCollection,實作大部分 List
LinkedList實作 List,允許 null,鏈表結構,非同步,查找慢
ArrayList實作 List,可變大小陣列,隨機存取快,非同步,增長 50%
AbstractSet實作大部分 Set
HashSet實作 Set,不重複、無序、允許一個 null
LinkedHashSet可預測迭代順序的 Set
TreeSet實作 Set,可排序
AbstractMap實作大部分 Map
HashMap雜湊表,鍵值對,依 HashCode 存取快,最多一個 null 鍵,非同步
TreeMap紅黑樹實作,鍵有序
WeakHashMap弱鍵雜湊表
LinkedHashMap繼承 HashMap,保持插入順序
IdentityHashMap參考相等比較

傳統類別(Vector、Stack、Dictionary、Hashtable、Properties、BitSet)亦在 java.util 中。


集合演算法

定義為集合類別的靜態方法(排序、搜尋等),具有多型特性。不可修改集合拋出 UnsupportedOperationException,型別不相容拋出 ClassCastException。三個不可變靜態常數:EMPTY_SET、EMPTY_LIST、EMPTY_MAP。


Iterator 遍歷最佳實務

遍歷 ArrayList 三種方式

List<String> list = new ArrayList<>();
list.add("Hello"); list.add("World"); list.add("HAHAHAHA");

// 1. foreach(推薦)
for (String str : list) System.out.println(str);

// 2. 轉陣列遍歷
String[] arr = list.toArray(new String[0]);
for (String s : arr) System.out.println(s);

// 3. Iterator(安全移除元素時使用)
Iterator<String> it = list.iterator();
while (it.hasNext()) System.out.println(it.next());

遍歷 Map 四種方式

Map<String,String> map = new HashMap<>();
map.put("1","value1"); map.put("2","value2"); map.put("3","value3");

// 1. keySet + get(兩次查找)
for (String k : map.keySet()) System.out.println(k + "=" + map.get(k));

// 2. entrySet + Iterator
Iterator<Map.Entry<String,String>> it = map.entrySet().iterator();
while (it.hasNext()) { Entry e = it.next(); System.out.println(e.getKey()+"="+e.getValue()); }

// 3. entrySet + foreach(推薦,大容量高效)
for (Entry<String,String> e : map.entrySet()) System.out.println(e.getKey()+"="+e.getValue());

// 4. values() 僅遍歷值
for (String v : map.values()) System.out.println(v);

Comparator 定制排序

TreeSet、TreeMap 依比較器排序。實作 Comparator 介面可自訂排序邏輯。


總結

  • 集合框架提供預先封裝的資料結構與演算法
  • 集合存放物件參考,加入後自動轉為 Object 型別,取出需強制轉型
  • 所有類別與介面均在 java.util 套件
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved