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

J2ME 資料結構實戰:Hashtable 與 Vector 核心用法與效能優化

     編輯:J2ME

J2ME 集合框架:輕量級雙雄

J2ME 無完整 Collections Framework,核心集合僅 Hashtable 與 Vector(均為輕量級實現,不支援泛型)。掌握其特性與優化技巧,是高效嵌入式開發的基礎。

Hashtable:鍵值映射表

核心特性

  • 將非 null 鍵映射至非 null 值
  • ME 版無泛型,與 SE 版細節略有差異
  • 兩大效能參數:容量、負載因子(CLDC 固定 0.75,不可調)
  • 當 size > capacity * 0.75 觸發 rehash() 擴容

關鍵優化:預設容量避免擴容


// 預估將存入 200 條記錄
Hashtable table = new Hashtable(300); // 容量 > 200/0.75 ≈ 267

預先分配足夠容量,避免運行期多次 rehash() 導致記憶體抖動與 CPU 尖峰。

構造函數


public Hashtable(int initialCapacity); // 指定初始容量
public Hashtable() { this(11); }       // 默認容量 11(質數,利於雜湊分佈)

基本操作範例


Hashtable t = new Hashtable();
t.put("key", "value");
Object v = t.get("key");
t.remove("key");
t.clear();

Vector:動態陣列

核心特性

  • 可增減的物件陣列,支援整數索引存取
  • 維護 capacity(總是 ≥ size)與 capacityIncrement(擴容步長)
  • 預先 ensureCapacity(n) 可減少重複分配

底層實現差異

  • Hashtable:鏈表數組(雜湊桶 + 鏈表解決衝突),擁有鏈表特性
  • Vector:動態陣列(連續記憶體),擁有陣列特性,動態擴容帶來額外複製開銷

效能與記憶體選型指引

場景推薦理由
鍵值查找、去重、索引HashtableO(1) 平均查找
順序存取、疊代、隨機索引Vector連續記憶體、快速索引
極度受限記憶體、固定大小陣列 Type[]無額外物件頭、最小開銷
頻繁增刪頭尾Vector封裝良好,避免手動複製

進階技巧

  • Hashtable 遍歷:Enumeration keys = table.keys(); while(keys.hasMoreElements()) { Object k = keys.nextElement(); ... }
  • Vector 轉陣列:Object[] arr = new Object[v.size()]; v.copyInto(arr);
  • 避免盒裝/拆箱:J2ME 無自動裝箱,基本型別存入需手動包裝(new Integer(i)),頻繁操作考慮平行陣列或自定義結構體

結語

Hashtable 與 Vector 是 J2ME 資料處理的基石。理解「負載因子觸發擴容」、「預設容量避免抖動」、「鏈表 vs 陣列底層差異」,並根據存取模式精準選型,能在 KB 級記憶體中構建高效、穩定的資料結構層。

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