概述

HashMap是Java里基本的存儲(chǔ)Key、Value的一個(gè)數(shù)據(jù)類型,了解它的內(nèi)部實(shí)現(xiàn),可以幫我們編寫出更高效的Java代碼。

本文主要分析JDK1.7中HashMap實(shí)現(xiàn),JDK1.8中的HashMap已經(jīng)和這個(gè)不一樣了,后面會(huì)再總結(jié)。

正文

HashMap概述

HashMap根據(jù)鍵的hashCode值獲取存儲(chǔ)位置,大多數(shù)情況下可以直接定位到它的值,因而具有很快的訪問速度,但遍歷順序卻是不確定的。 HashMap最多只允許一條記錄的鍵為null,允許多條記錄的值為null。HashMap非線程安全,即任一時(shí)刻可以有多個(gè)線程同時(shí)寫HashMap,可能會(huì)導(dǎo)致數(shù)據(jù)的不一致。如果需要滿足線程安全,可以用 Collections的synchronizedMap方法使HashMap具有線程安全的能力,或者使用ConcurrentHashMap。

HashMap的存儲(chǔ)結(jié)構(gòu)如下圖所示:

Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),移動(dòng)開發(fā)培訓(xùn),云培訓(xùn)培訓(xùn)

網(wǎng)友評(píng)論