Map

2023/09/26閱讀時間約 1 分鐘
Map是由Key-Value所組成的
而Key的部分不能重複,因為是Set
  1. HashMap:
    • 使用哈希表存儲鍵值對
    • 平均情況下,基本操作(獲取、插入、刪除)具有常數時間複雜度
    • 不保證項目的特定順序
    • 允許鍵和值為空( 空字串、null)
    • 非線程安全
  2. LinkedHashMap:
    • 保持項目插入的順序
    • 使用哈希表和鏈表實現有序遍歷
    • 提供類似 HashMap 的性能,但稍微慢一些,因為需要維護順序
    • 允許鍵和值為空( 空字串、null)
    • 非線程安全
  3. TreeMap:
    • 根據鍵的自然順序或自定義 Comparator 進行排序
    • 使用紅黑樹結構維護項目
    • 基本操作(獲取、插入、刪除)具有對數時間複雜度
    • 提供有序遍歷
    • 不允許鍵為空,但允許值為空 (因為要以鍵做排序)
    • 非線程安全
  4. ConcurrentHashMap:
    • 提供線程安全的操作,支持併發訪問
    • 將底層數據結構分為多個段,允許對不同段進行並發操作
    • 適用於高並發場景,具有良好的擴展性
    • 對於非並發訪問,性能與 HashMap 相似
    • 允許鍵和值為空( 空字串、null)
簡單來講,併發就是多個執行緒在同個時間內不斷切換、互相搶資源地在處理任務。是在瞬間、極短的時間內!
  1. Hashtable:
    • ConcurrentHashMap 出現後被標記為過時 (deprecated)
    • 提供線程安全的操作,支持併發訪問
    • 提供類似 HashMap 的功能,但具有同步方法
    • 不允許鍵和值為空
  2. WeakHashMap (我完全沒用到過):
    • 允許鍵在不再有強引用時被垃圾回收
    • 適用於動態創建鍵並在內存壓力下釋放的情況
    • 提供類似 HashMap 的功能,但具有弱鍵
    • 非線程安全


我的Java學習日記
留言0
查看全部
發表第一個留言支持創作者!