HashMap原理以及如何解決衝突問題
阿新 • • 發佈:2019-02-14
面試時最經典也是最喜歡問的集合是HashMap了
1:先說一下HashMap的資料結構:
HashMap是一個雜湊表,其底層可以說是陣列加連結串列結構:看圖直觀明瞭
HashMap的預設容量是16,當到達16時,HashMap會根據負載因子(預設0.75)和擴容規則,增加容量的 具體請看
---------------------------------------------------------------------------這是一條分割線----------------------------------------------------------------------
在說一下ArrayList底層數陣列結構,如何根據索引來查詢陣列的時間複雜度為O(1),但是操作如果需要遍歷的話,時間複雜度為O(n),
而且增刪對於陣列結構的消耗很大,也就是效能比較次,因為ArrayList每次新增或者刪除都相當於新開闢一個數組記憶體,然後再copy原來的,再加上新增的,刪除也是相同的,需要先copy到新的陣列中,這樣操作時間和消耗都是很大的。所以查詢快
但是LinkedList不是的,LinkeList是查詢相比較ArrayList慢一點,但是新增和刪除快效率高,之所以查詢慢,是因為LinkedList是連結串列結構,獲取某個元素都是需要遍歷的。但是查詢的時間複雜度是O(n) ,
看下圖對比:時間複雜度,需要遍歷的操作則複雜度為O(1)