LinkedHashSet底層原理詳解


LinkedHashSet詳解

1. 說明

  1. LinkedHashSet是HashSet的子類
  2. LinkedHashSet底層是一個LinkedHashMap,底層維護了一個數組 + 雙向鏈表
  3. LinkedHashSet根據元素的hashCode值來決定元素的存儲位置,同時使用鏈表維護元素的次序,這使得元素看起來是以插入順序保存的
  4. LinkedHashSet不允許添加重復元素

2. 添加元素詳解

  1. 在LInkedHashSet中維護了一個hash表和雙向鏈表,LinkedHashSet中有head和tail,分別指向鏈表的頭和尾

  2. 每一個節點有before和after屬性,這樣可以形成雙向鏈表

  3. 在添加一個元素時,先求hash值,再求索引,確定該元素在table表中的位置,然后將添加的元素加入到雙向鏈表(如果該元素已經存在,則不添加)

    tail.next = newElement

    newElement.pre = tail

  4. 這樣在遍歷LinkedHashSet時也能確保插入順序和遍歷順序一致


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM