二話不說,先看一段demo:
public
class
demo}}
//這個輸出的結果是我是王小五
那麼為什麼會實現這個呢?底層到底是什麼呢?
帶著這兩個問題我們來看一下,想要很好的理解,我們來反編譯一下這段程式,如下:
public
class
demo
public
static
void
main
(string[
] args)
break
;case
29176112:if
(name.
equals
("王小五"))
}switch
(var3)
}}
我相信通過反編譯,大家都很清楚了吧,switch裡面是name.hashcode()
,得出對應的雜湊值,那麼下面case比較的就是雜湊值了,這樣就實現了這個新特性,這個新特性從jdk1.7就開始可以使用,底層的原理就是這個了。 JDK1 8中的hashmap和JDK1 7的區別
1.資料插入的方式不同 jdk1.7用的是頭插法,而jdk1.8用的是尾插法,這是由於jdk1.7是用單鏈表進行的縱向延伸,當採用頭插法時會容易出現逆序且環形鍊錶死迴圈問題。但是在jdk1.8之後是因為加入了紅黑樹使用尾插法,能夠避免出現逆序且鍊錶死迴圈的問題。2.組成結構不同 jdk1.7的時候使...
myEclipse配置jdk1 7教程
位址 鏈結 密碼 wrmf 第二步 安裝jdk1.7 將 的壓縮包進行解壓,得到乙個jdk 7程式設計客棧u17 windows x64.exe的檔案,直接程式設計客棧雙擊執行,安裝完成。第三步 在專案上右鍵 properties,選擇j a build path,點程式設計客棧擊jre syste...
jdk1 7中HashMap死迴圈分析
在多執行緒環境下,使用hashmap進行put操作會引起死迴圈,導致cpu利用率接近100 hashmap在併發執行put操作時會引起死迴圈,是因為多執行緒會導致hashmap的entry鍊錶 形成環形資料結構,一旦形成環形資料結構,entry的next節點永遠不為空,就會產生死迴圈獲取entry。...