1. 程式人生 > >HashMap原理以及如何解決衝突問題

HashMap原理以及如何解決衝突問題

面試時最經典也是最喜歡問的集合是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)