1. 程式人生 > 實用技巧 >Java資料儲存:集合框架與泛型拓展(一)Map

Java資料儲存:集合框架與泛型拓展(一)Map

Map

HashMap和TreeMap

  1. 實現
    TreeMap:SortMap介面,基於紅黑樹
    HashMap:基於雜湊散列表實現
  2. 儲存
    TreeMap:預設按鍵的升序排序
    HashMap:隨機儲存
  3. 遍歷
    TreeMap:Iterator遍歷是排序的
    HashMap:Iterator遍歷是隨機的
  4. 效能損耗
    TreeMap:插入、刪除
    HashMap:基本無
  5. 鍵值對
    TreeMap:鍵、值都不能為null
    HashMap:只允許鍵、值均為null
  6. 安全
    TreeMap:非併發安全Map
    HashMap:非併發安全Map
  7. 效率
    TreeMap:低
    HashMap:高

紅黑樹
在這裡插入圖片描述
從上而下,比父節點大的放在左邊,比父節點大的放在右

祖父G- ganderfather
父母P-Parents
叔叔U- uncle
兄弟B- brother
根 R-root
當前新增節點C-Current
在這裡插入圖片描述

根據x軸遞增的規律來排序

  1. 紅黑樹特性:
    1. 每個節點都有顏色,不是紅色就是黑色
    在這裡插入圖片描述
    1. 根節點是黑色
    2. 每個葉子節點(NIL)都是黑色的虛點(值)null
    3. 每個紅色節點的子節點一定是黑色的(紅色節點一定有黑色的父節點)
    4. 任意節點到每個葉子節點(虛擬的NIL)的路徑都包含相同數量的黑節點
      在這裡插入圖片描述
      紅黑樹的平衡性
      1. 紅黑樹是一種含有紅黑節點的並能自平衡的二叉查詢樹。
        a. 包含變色,旋轉。旋轉包含左旋和右旋。
        b. 旋轉節點按照子節點旋轉(子節點為圓心)。
      2. 紅黑樹是非完美二叉平衡查詢樹,是完美黑色二叉查詢樹
        在這裡插入圖片描述