1. 程式人生 > >什麼是雜湊表?什麼是雜湊衝突?hashMap的原理?

什麼是雜湊表?什麼是雜湊衝突?hashMap的原理?

雜湊表是基於陣列的一種儲存方式.它主要由雜湊函式和陣列構成。

當要儲存一個數據的時候,首先用一個函式計算資料的地址,然後再將資料存進指定地址位置的數組裡面。這個函式就是雜湊函式,而這個陣列就是雜湊表。

雜湊表的優勢在於:相比於簡單的陣列以及連結串列,它能夠根據元素本身在第一時間,也就是時間複雜度為0(1)內找到該元素的位置。這使得它在查詢和刪除、插入上會比陣列和連結串列要快很多。因為他們的時間複雜度為o(n)。

雜湊衝突是指雜湊函式算出來的地址被別的元素佔用了,也就是,這個位置有人了。好的雜湊函式會盡量避免雜湊衝突。而解決雜湊衝突的辦法之一就是開放定址法(發生衝突,繼續尋找下一塊未被佔用的儲存地址),再雜湊函式法,鏈地址法。

雜湊函式用的就是鏈地址法,也就是陣列+連結串列的方法,hashMap用的就是鏈地址法.。鏈地址法就是,當沒有發生雜湊衝突的時候hashmap主要只有陣列。但是當發生衝突的時候,它會在雜湊函式找到的當前陣列記憶體地址位置下新增一條連結串列。