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

Java Map 體系架構深度解析:接口層次、核心實現、導航操作與弱引用特性

     編輯:Java 程式設計入門

接口繼承體系

Map (K,V)
├── SortedMap (Key 有序、Comparator)
│   └── NavigableMap (導航方法:floor/ceiling/higher/lower...)
└── ConcurrentMap (並發操作)
    └── ConcurrentNavigableMap

核心實現類對比

NavigableMap 導航方法詳解

NavigableMap map = new TreeMap<>();
map.put("d", "4"); map.put("b", "2"); map.put("f", "6");

// 向下查找 (≤)
map.floorEntry("c");   // b=2
map.floorKey("c");     // b

// 向上查找 (≥)
map.ceilingEntry("c"); // d=4
map.ceilingKey("c");   // d

// 邊界
map.firstEntry();      // 最小
map.lastEntry();       // 最大
map.pollFirstEntry();  // 取出並移除最小
map.pollLastEntry();   // 取出並移除最大

// 子視圖 (視圖修改影響原 Map)
map.subMap("b", true, "f", false); // [b, f)
map.headMap("d", true);            // ≤ d
map.tailMap("d", false);           // > d

// 反序視圖
NavigableMap desc = map.descendingMap();

WeakHashMap 原理與場景

  • Key 為 WeakReference,GC 掃描到無強引用 Key 時,Entry 自動失效
  • 需定期調用 size() 或遍歷觸發清理
  • 典型場景:緩存元數據、監聽器註冊表、ClassLoader 相關緩存

AbstractMap 骨架實現

模板方法模式:子類實現 entrySet(),父類提供 keySet()、values()、putAll、toString、equals/hashCode 等通用邏輯。

選型速查

  • 一般業務 → HashMap
  • 需保持插入順序 → LinkedHashMap
  • 需 Key 有序/範圍查詢 → TreeMap
  • 高併發讀寫 → ConcurrentHashMap
  • 緩存、生命週期跟隨 Key → WeakHashMap
  • 舊代碼兼容 → Hashtable(不推薦新項目)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
類底層結構有序性線程安全Null Key/Value特色
HashMap數組+鏈表/紅黑樹無序否允許 1 null key通用高性能
LinkedHashMapHashMap+雙向鏈表插入/訪問序否允許LRU 緩存基礎
TreeMap紅黑樹Key 自然序/Comparator否不允許 null key範圍查詢、有序遍歷
Hashtable數組+鏈表無序是 (全鎖)不允許舊版、已被 ConcurrentHashMap 取代
WeakHashMapHashMap+弱引用 Key無序否允許Key 無強引用時自動移除
ConcurrentHashMapNode[]+CAS+synchronized無序是 (細粒度)不允許高併發首選