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

Java 集合框架深度筆記(二):包裝類、Collection 體系、Map 體系與工具類全景

     編輯:Java 綜合教學

基本類型包裝類:橋接基本類型與對象世界

基本類型包裝類核心常量/方法
byteByteMIN_VALUE, MAX_VALUE, parseByte(), toString()
shortShort同上
intIntegerparseInt(s, radix), toBinaryString(), valueOf() 緩存 [-128,127]
longLongparseLong()
floatFloatisNaN(), isInfinite()
doubleDouble同上
booleanBooleanTRUE, FALSE, valueOf()
charCharacterisDigit(), isLetter(), toUpperCase()

三向轉換:int ↔ Integer ↔ String,valueOf() 優於構造器(緩存),parseInt() 拋 NumberFormatException。

Collection 體系架構圖

Collection (I)
├── List (I)          // 有序、可重複、有索引
│   ├── ArrayList     // 數組底層,查詢快 O(1),增刪慢 O(n),非同步,擴容 1.5倍
│   ├── LinkedList    // 雙向鏈表,增刪快 O(1),查詢慢 O(n),非同步,實現 Deque
│   └── Vector        // 數組底層,同步(慢),擴容 2倍,已過時
└── Set (I)           // 無序、不可重複
    ├── HashSet       // HashMap 底層,O(1),非同步,依賴 hashCode/equals
    ├── LinkedHashSet // 維護插入順序
    └── TreeSet       // 紅黑樹,O(log n),有序(自然/定製),依賴 compareTo/Comparator

List 選型指南

  • 頻繁隨機訪問 → ArrayList
  • 頻繁頭尾增刪/棧/隊列 → LinkedList(offerFirst/pollLast 等 Deque 方法)
  • 需線程安全 → Collections.synchronizedList 或 CopyOnWriteArrayList
  • 去重存入 → 重寫 equals()(contains/add/remove 依賴它)

Set 去重機制

Set 類型判等邏輯注意事項
HashSet先 hashCode(),相同再 equals()自定義類必須重寫兩者,保持一致性
TreeSetcompareTo() 返回 0 視為重複元素實現 Comparable 或構造傳 Comparator

Map 體系

Map (I)
├── HashMap      // 數組+鏈表/紅黑樹(JDK8),非同步,允許 null key/value
├── LinkedHashMap// 維護插入/訪問順序
├── TreeMap      // 紅黑樹,Key 有序,非同步
├── Hashtable    // 同步,不允許 null,已過時
└── Properties   // 專用配置,鍵值皆 String

遍歷模式:keySet() + get()、entrySet()(推薦)、JDK8 forEach((k,v)->...)。

核心輔助介面與工具類

介面/類用途
Iterator單向遍歷,可 remove()
ListIterator雙向遍歷,可 add/set/previous
Comparable<T>類內部自然排序 compareTo(T)
Comparator<T>外部定製排序 compare(T,T),Strategy 模式
Collectionssort/shuffle/reverse/singletonList/emptyList/synchronizedXxx
Arrayssort/binarySearch/toList/stream/parallelSort

實戰避坑清單

  1. 併發修改異常:遍歷中直接 list.remove() → 用 Iterator.remove() 或 removeIf()。
  2. HashMap 多線程死循環:JDK7 擴容鏈表倒序導致環 → 改用 ConcurrentHashMap。
  3. Arrays.asList() 返回固定長度列表,不可 add/remove。
  4. HashSet 存儲可變對象後修改字段導致 hashCode 變化 → 取不出來,視為內存洩漏。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved