1. 程式人生 > 實用技巧 >react 路由按需載入

react 路由按需載入

  • ArrayList的底層資料結構:陣列。
  • LinkedList的底層資料結構:連結串列。既實現了List介面,又實現了Queue介面,在使用的時候,如果我們把它當作List,就獲取List的引用,如果我們把它當作Queue,就獲取Queue的引用
  • TreeSet,TreeMap的底層資料結構:紅黑樹。
  • HashSet的底層資料結構:雜湊表(陣列+連結串列+紅黑樹)。當連結串列長度超過閾值(8)時,將連結串列轉換為紅黑樹
  • HashMap的底層資料結構: 位桶+連結串列+紅黑樹實現,當連結串列長度超過閾值(8)時,將連結串列轉換為紅黑樹

List介面

  • 元素有序
  • 有索引
  • 元素可以重複

ArrayList

  • ArrayList的底層就是陣列。陣列查詢快,故ArrayList常用來查詢資料
  • 如何擴容? 建立一個新的陣列,再將舊陣列複製進去,這樣長度就增加了

LinkedList

  • 底層是連結串列。連結串列增刪快,故LinkedList常用來增刪資料.

Set介面

  • 元素無序
  • 沒有索引
  • 元素不能重複

Collection遍歷刪除元素

1.普通for迴圈:注意每次刪除之後索引要--
2.Iterator遍歷:不過要使用Iterator類中的remove方法,如果用List中的remove方法會報錯
3.增強for迴圈foreach不能刪除,強制用List中的remove方法會報錯

Map介面

HashMap

  • 鍵值對
  • 無序,不支援排序
  • 採用雜湊演算法,查詢很快
  • key可以存null
  • value可以重複
  • 鏈地址法解決雜湊衝突

雜湊表

Set的元素不可重複,這個問題該如何解決?

若是我的話,我肯定會想:將新的元素和Set中的每一個元素比較一遍不就可以了?如果有相等的,就不新增;如果有不相等的,就新增。
這樣做有問題麼,理論上是沒問題的,但是效率太低太低了,每次新增一個元素就要將元素遍歷一遍。
為了解決這個問題,就弄出了雜湊表。

雜湊表可以用來高效率解決元素不可重複這個問題,其本質就是:陣列+連結串列+紅黑樹。
所以如果新建了一個物件,需要重寫hashCode方法和equals方法

  • key,value都不可為null
  • 執行緒安全
  • 雜湊值就有點類似於陣列中的索引,因為雜湊值不同其元素必定不同
    • 如果沒有相同的雜湊值,直接新增進集合
    • 如果有相同的雜湊值,再用equals方法比較內容是否一樣
  • 擴容
    • 雜湊表中陣列預設長度16,如果陣列中的元素超過了75%就開始擴容
  • 如果連結串列元素數量超過8,就將連結串列重構成紅黑樹。連結串列查詢是很慢的,所以為了查詢效率,連結串列元素數量過多,就會重構成紅黑樹,紅黑樹查詢效率比連結串列要快

ConcurrentHashMap

原理:類中包含兩個靜態內部類HashEntry和Segment,HashEntry封裝了鍵值對對映表,一個物件表示
一個鍵值對,且在內部是以連結串列的形式存在,Segment是一個鎖物件,守護整個雜湊對映表的若干個
桶,每個桶代表由若干個HashEntry物件連起來的連結串列,一個 ConcurrentHashMap 例項中包含由若
幹個 Segment 物件組成的陣列,在 HashEntry 類中,key,hash 和 next 域都被宣告為 final 型,
value 域被宣告為 volatile 型。在ConcurrentHashMap 中,在雜湊時如果產生“碰撞”,將採用
“分離連結法”來處理“碰撞”:把“碰撞”的 HashEntry 物件連結成一個連結串列。由於 HashEntry
的 next 域為 final 型,所以新節點只能在連結串列的表頭處插入.
Segment 類繼承於 ReentrantLock 類,從而使得 Segment 物件能充當鎖的角色。每個
Segment 物件用來守護其(成員物件 table 中)包含的若干個桶。

  • 鎖分段技術:首先將資料分成一段一段的儲存,然後給每一段資料配一把鎖,當一個執行緒佔用鎖訪問
    其中一個段資料的時候,其他段的資料也能被其他執行緒訪問。

SortedMap介面

  • 有序
  • 支援排序
  • 不可存null
  • 查詢較慢
  • value可以重複
  • 採用紅黑樹排序,可以呼叫Comparator型別的構造方法進行定製排序
  • TreeMap是它的實現類,繼承體系 Map -> SortMap -> NavigbleMap -> TreeMap