真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

HashMap遍歷方法是什么

這篇文章主要講解了“HashMap遍歷方法是什么”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“HashMap遍歷方法是什么”吧!

我們一直強調(diào)成都做網(wǎng)站、成都網(wǎng)站設(shè)計、成都外貿(mào)網(wǎng)站建設(shè)對于企業(yè)的重要性,如果您也覺得重要,那么就需要我們慎重對待,選擇一個安全靠譜的網(wǎng)站建設(shè)公司,企業(yè)網(wǎng)站我們建議是要么不做,要么就做好,讓網(wǎng)站能真正成為企業(yè)發(fā)展過程中的有力推手。專業(yè)網(wǎng)絡(luò)公司不一定是大公司,創(chuàng)新互聯(lián)公司作為專業(yè)的網(wǎng)絡(luò)公司選擇我們就是放心。

遍歷方式
Iterator> entryIterator = map.entrySet().iterator();
        while (entryIterator.hasNext()) {
            Map.Entry next = entryIterator.next();
            System.out.println("key=" + next.getKey() + " value=" + next.getValue());
        }


Iterator iterator = map.keySet().iterator();
        while (iterator.hasNext()){
            String key = iterator.next();
            System.out.println("key=" + key + " value=" + map.get(key));

        }

map.forEach((key,value)->{
    System.out.println("key=" + key + " value=" + value);
});
 

強烈建議使用第一種 EntrySet 進(jìn)行遍歷。

第一種可以把 key value 同時取出,第二種還得需要通過 key 取一次 value,效率較低, 第三種需要 JDK1.8 以上,通過外層遍歷 table,內(nèi)層遍歷鏈表或紅黑樹。

 
notice

在并發(fā)環(huán)境下使用 HashMap 容易出現(xiàn)死循環(huán)。

并發(fā)場景發(fā)生擴(kuò)容,調(diào)用 resize() 方法里的 rehash() 時,容易出現(xiàn)環(huán)形鏈表。這樣當(dāng)獲取一個不存在的 key 時,計算出的 index 正好是環(huán)形鏈表的下標(biāo)時就會出現(xiàn)死循環(huán)。

HashMap遍歷方法是什么


所以 HashMap 只能在單線程中使用,并且盡量的預(yù)設(shè)容量,盡可能的減少擴(kuò)容。
 

在 JDK1.8 中對 HashMap 進(jìn)行了優(yōu)化: 當(dāng) hash 碰撞之后寫入鏈表的長度超過了閾值(默認(rèn)為8),鏈表將會轉(zhuǎn)換為紅黑樹。

假設(shè) hash 沖突非常嚴(yán)重,一個數(shù)組后面接了很長的鏈表,此時重新的時間復(fù)雜度就是 O(n) 。

如果是紅黑樹,時間復(fù)雜度就是 O(logn) 。

大大提高了查詢效率。

感謝各位的閱讀,以上就是“HashMap遍歷方法是什么”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對HashMap遍歷方法是什么這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!


本文標(biāo)題:HashMap遍歷方法是什么
轉(zhuǎn)載注明:http://weahome.cn/article/ipecdj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部