JDK HashMap幾個有意思的問題

2021-10-20 18:36:49 字數 477 閱讀 3560

## hashmap的hash演算法

hash原始碼如下

做了什麼?

為啥這麼做?

## hash碰撞怎麼做(hash衝突)

鍊錶+紅黑樹

如果元素的key的hash值相同,則使用乙個鍊錶來存放。鍊錶查詢乙個元素的時間複雜度為 o(n),鍊錶到達一定長度(8),則使用紅黑樹,紅黑樹尋找乙個元素的時間的時間複雜度為o(logn)

## rehash 擴容

當存放的長度到達閾值以後,就要出發rehash,將原來的進行重新hash,判斷hash值和新的陣列長度與的結果,是否多了乙個位元,如果沒多則還是原來的位置,如果多了,則是原來的位置 + 原來的陣列的長度,就是在新陣列的下標位置。 

有意思的話

1 要麼忍,要麼殘忍 2 下輩子我要做你的一顆牙,至少,我難受,你也會疼 3 心不動,則不痛 4 我們唯一的關係是沒有關係。5 你會流淚,並不代表真的慈悲 我會微笑,並不代表一切都好。6 孤單 是 你心裡面沒有人 寂寞 是 你心裡有的人卻不在身邊 7 冬天裡你給了我乙個夏天的夢 卻把我在春天叫醒了 ...

幾個有意思的面試題

1,abcdx9 dcba 因為9乘a不進製所以a只能是1 9乘d得個位是1所以d只能是9 同樣9乘b也不能進製只有1和0,1已屬a所以b只能是0 9乘9進8要想第二位為0,乘9的個位上必須是2,c就只有8了 所以abcd 1089 2,一艘輪船從甲港順水航行到乙港,立即逆水返回甲港。共用8小時。已...

執行緒的幾個有意思的方法

1.join 方法 字面意思就是 讓某個執行緒join 參加 加入 進來。即讓加入的那個執行緒執行,而當前正在執行的執行緒 呼叫的執行緒 阻塞,直到加入的執行緒執行完成。一句話 誰join進來就執行誰。沒有使用join時的情況 package threaddemo public class firs...