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

Java 資料結構筆記:陣列、集合與實用工具類完全指南

     編輯:Java 程式設計入門

核心資料結構深度解析

陣列 - 固定大小的高效容器

Java 陣列本質是物件,儲存於堆疊記憶體,元素型別統一(基本型別存值、參考型別存指標)。宣告與初始化五大模式:

// 1. 僅宣告參考
String[] difWords;
Point[] hits;

// 2. 方法回傳型別宣告慣例
String[] difWords;
Point[] hits;

// 3. 動態配置指定長度
String[] names = new String[10];
int[] temps = new int[10];

// 4. 靜態初始化
String[] names = {"墨西哥椒", "安海姆椒", "塞拉諾椒"};

// 5. 多維陣列(實為陣列的陣列)
int[][] coords = new int[12][12];

關鍵屬性 length 提供長度查詢,無 size() 方法。陣列實作 Cloneable、Serializable,支援 Arrays 工具類排序、搜尋、複製、轉字串等操作。

Enumeration - 經典迭代介面

早期集合統一迭代協定,兩大核心方法:

  • hasMoreElements():判斷是否有下一元素
  • nextElement():取得下一元素,無元素拋出 NoSuchElementException

現代程式碼建議使用 Iterator 或增強型 for 迴圈取代。

BitSet - 位元級旗標高效管理

適用於大量布林旗標儲存(如權限位圖、布隆過濾器原型)。BitSet bits = new BitSet(64) 建立 64 位元集合,核心操作:

  • set(index) / clear(index):置 1/0
  • get(index):讀取位元值
  • size():邏輯長度
  • xor(bitSet)、and()、or():位元邏輯運算

Vector - 同步化動態陣列

早期 ArrayList 同步化版本,容量自動增長策略可控:new Vector(20, 5) 初始 20、每次增 5。所有方法皆 synchronized,多執行緒環境下無需額外同步,但單執行緒效能較 ArrayList 低。現代開發優先選用 ArrayList + 手動同步或 CopyOnWriteArrayList。

Stack - 後進先出 (LIFO) 結構

繼承 Vector,提供棧語義方法:

  • push(E item) 入棧、pop() 出棧
  • peek() 偷看棧頂不移除
  • empty() 判斷空棧、search(Object o) 從棧頂往下搜尋(1-based 索引)

建議改用 Deque<E> 介面與 ArrayDeque 實作,效能更優、API 更完整。

Dictionary 與 Hashtable - 鍵值對鼻祖

Dictionary 為抽象類別定義 put/get/remove/keys/elements 協定。Hashtable 實作之並實作 Serializable、Cloneable,所有方法同步化。關鍵差異:Hashtable 不允許 null 鍵/值,HashMap 允許單一 null 鍵與多個 null 值且非同步,單執行緒效能遠優於 Hashtable。現代開發首選 HashMap、ConcurrentHashMap(高併發)、LinkedHashMap(保持插入/存取順序)。

選型決策速查表

場景推薦類別備註
固定大小、高效能、基本型別陣列 T[]避免裝箱/拆箱開銷
動態陣列、單執行緒、隨機存取頻繁ArrayList預設初始容量 10,擴容 1.5 倍
動態陣列、多執行緒、舊版相容Vector同步開銷大,慎用
棧/佇列雙端操作ArrayDeque非同步、陣列實作、無容量上限
鍵值對、單執行緒、允許 nullHashMapJDK 8+ 鏈表轉紅黑樹優化
鍵值對、高併發讀寫ConcurrentHashMapCAS + synchronized 細粒度鎖
位元旗標、大量布林狀態BitSet記憶體極度緊湊

最佳實務提醒

  1. 優先使用集合框架介面宣告:List<String> list = new ArrayList<>(); 利於重構替換實作。
  2. 預估資料量預設初始容量:避免頻繁擴容複製陣列,new ArrayList(1000)。
  3. 慎用舊版同步集合:Vector、Hashtable、Collections.synchronizedList() 在高併發下成為瓶頸,改用 java.util.concurrent 套件。
  4. 善用工具類:Arrays、Collections 提供排序、搜尋、不可變視圖、同步包裝等現成功能,勿重複造輪子。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved