網(wǎng)上關(guān)于HashMap的工作原理的文章多了去了,所以我也不打算再重復(fù)別人的文章。我就是有點好奇,我怎么樣能更好的理解他的原理,或者說使用他的特性呢?最好的開發(fā)就是測試~

  雖說不詳講hashmap的工作原理,但是起碼的常識還是要提一下的。

一句話:hashmap最直觀的表現(xiàn)是一維數(shù)組或者說一維字典,但是每個每個值又可以指向另一個數(shù)組或都字典!

一張圖:

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

  其實說實話,給我個人的感覺是,說鏈表只是顯得高大上些罷了,當(dāng)然這片面的理解,不過也是令人誤解的地方。

  我曾經(jīng)就以為,鏈表真是個高大上的東西,那我怎樣生成這樣的鏈接呢?

  難道是 HashMap.put("c", "xxx").put("sss", "ssssss"), 鏈?zhǔn)秸{(diào)用 ?

  難道是 HashMap.get("c").put("ccx")?

  難道是 HashMap.put("c", "1"); HashMap.put("c", "2"); HashMap.put("c", 333); ?

  很顯然,這是會犯錯誤的,因為IDE就不會讓你通過過,編譯是不會讓你過的?

  那么,回到這個問題上,什么叫鏈表?

  百度百科解釋:鏈表是一種物理存儲單元上非連續(xù)、非順序的存儲結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過鏈表中的指針鏈接次序?qū)崿F(xiàn)的。鏈表由一系列結(jié)點(鏈表中每一個元素稱為結(jié)點)組成,結(jié)點可以在運行時動態(tài)生成。每個結(jié)點包括兩個部分:一個是存儲數(shù)據(jù)元素的數(shù)據(jù)域,另一個是存儲下一個結(jié)點地址的指針域。

  那么,說白了,鏈表就是說,你這個key可以指向任何地方,當(dāng)然也就包含了hashmap了。 所以想要形成多層鏈表,只要嵌套多個hashmap就可以了。

  測試代碼如下:

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

import java.util.HashMap;public class HashmapImprove {    public static void main(String[] args) {
        HashMap<String, Object> hashMap1 = new HashMap<>();
        HashMap<String, Object> hashMap2 = new HashMap<>();
        HashMap<String, Object> hashMap3 = new HashMap<>();
        hashMap1.put("h1-1", 2);
        hashMap1.put("h1-2", 336);
        hashMap2.put("hashmap1", hashMap1);
        hashMap2.put("h2-2", "moto");
        hashMap2.put("h2-3", "xys");
        hashMap3.put("hashmap2", hashMap2);
        hashMap3.put("h3-2", "3333");
        hashMap3.put("h3-3", 2);
        System.out.println("hello, world." + hashMap3);
    }
}

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

  斷點調(diào)試一下,清晰明了:

photoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)

  說得更直白一點,Hashmap其實就是個多維數(shù)據(jù),只不過數(shù)據(jù)類型可以是任意的而已。當(dāng)然了,其實現(xiàn)原理還是很高大上的,比如:鏈表、遍歷、性能、并發(fā)!

http://www.cnblogs.com/yougewe/p/7137036.html