Java中hashMap遍歷的9種方式
在java開(kāi)發(fā)中,hashMap是非常重要的容器類,存儲(chǔ)的是鍵值對(duì)(key,value)。
HashMap繼承AbstractMap,實(shí)現(xiàn)了Map、Cloneable、Serializable接口,非線程安全類,但是效率高。HashMap允許null健和null值,允許value重復(fù),但不允許key重復(fù)。HashMap有兩個(gè)參數(shù)影響其性能,初始容量和加載因子,當(dāng)哈希表中的條目數(shù)超出加載因子與當(dāng)前容量的乘積時(shí),要對(duì)哈希表進(jìn)行refresh操作,重建內(nèi)部數(shù)據(jù)結(jié)構(gòu),容量擴(kuò)大為之前的兩倍,加載因子默認(rèn)值為0.75。
HashMap的遍歷方式
第一種,遍歷HashMap的entrySet鍵值對(duì)集合,通過(guò)HashMap.entrySet()得到鍵值對(duì)集合,通過(guò)迭代器Iterator遍歷集合得到key和value。
public static void main(String[] args) { Map<Object, Object> map = new HashMap<>(); map.put("caocao","11"); map.put("liubei","22"); map.put("sunquan","33"); first(map); } private static void first(Map<Object, Object> map) { Iterator<Map.Entry<Object, Object>> iterator = map.entrySet().iterator(); while (iterator.hasNext()) { Map.Entry<Object, Object> entry = iterator.next(); System.out.println("key:" + entry.getKey() + ",vaule:" + entry.getValue()); } }
第二種,遍歷HashMap的keySet集合,通過(guò)HashMap.keySet()得到key集合,通過(guò)迭代器Iterator遍歷集合得到key和value。
private static void second(Map<Object, Object> map) { Iterator<Object> iterator = map.keySet().iterator(); while (iterator.hasNext()) { Object key = iterator.next(); System.out.println("key:" + key + ",vaule:" + map.get(key)); } }
第三種,遍歷HashMap的values集合,通過(guò)HashMap.valus()得到value集合,通過(guò)迭代器Iterator遍歷集合得到key和value。
private static void third(Map<Object, Object> map) { Iterator<Object> iterator = map.values().iterator(); while (iterator.hasNext()) { Object value = iterator.next(); System.out.println("vaule:" + value); } }
第四種,遍歷HashMap的entrySet鍵值對(duì)集合,通過(guò)HashMap.entrySet()得到鍵值對(duì)集合,通過(guò)for循環(huán)遍歷集合得到key和value。
private static void fourth(Map<Object, Object> map) { for (Map.Entry<Object,Object> entry: map.entrySet()) { System.out.println("key:" + entry.getKey() + ",vaule:" + entry.getValue()); } }
第五種,遍歷HashMap的keySet集合,通過(guò)HashMap.keySet()得到key集合,通過(guò)for循環(huán)遍歷集合得到key和value。
private static void fifth(Map<Object, Object> map) { for(Object key : map.keySet()) { System.out.println("key:" + key + ",vaule:" + map.get(key)); } }
第六種,遍歷HashMap的values集合,通過(guò)HashMap.valus()得到value集合,通過(guò)for循環(huán)遍歷集合得到key和value。
private static void sixth(Map<Object, Object> map) { for (Object value : map.values()) { System.out.println("vaule:" + value); } }
第七種,通過(guò)Lambda遍歷HashMap得到key和value
private static void seventh(Map<Object, Object> map) { map.forEach((key,value) -> { System.out.println("key:" + key + ",vaule:" + value); }); }
第八種,通過(guò)Lambda遍歷HashMap.entrySet()得到鍵值對(duì)集合得到key和value
private static void eighth(Map<Object, Object> map) { map.entrySet().forEach(item -> { System.out.println("key:" + item.getKey() + ",vaule:" + item.getValue()); }); }
第九種,通過(guò)Lambda遍歷HashMap.keySet()得到key集合得到key和value
private static void ninth(Map<Object, Object> map) { map.keySet().forEach(item -> { System.out.println("key:" + item + ",vaule:" + map.get(item)); }); }
以上遍歷主要Iterator遍歷集合方式、for循環(huán)遍歷集合方式,Lambda遍歷集合方式,根據(jù)具體需求選用不同的方式,通過(guò)Iterator方式循環(huán)刪除數(shù)據(jù)是安全的,for方式循環(huán)刪除數(shù)據(jù)非安全,Lambda方式循環(huán)刪除數(shù)據(jù)非安全,通過(guò)Iterator方式的效率也很高。
到此這篇關(guān)于Java中hashMap遍歷的9種方式的文章就介紹到這了,更多相關(guān)Java hashMap遍歷內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java大數(shù)據(jù)開(kāi)發(fā)Hadoop?MapReduce
MapReduce的思想核心是“分而治之”,適用于大量復(fù)雜的任務(wù)處理場(chǎng)景(大規(guī)模數(shù)據(jù)處理場(chǎng)景)Map負(fù)責(zé)“分”,即把復(fù)雜的任務(wù)分解為若干個(gè)“簡(jiǎn)單的任務(wù)”來(lái)并行處理。可以進(jìn)行拆分的前提是這些小任務(wù)可以并行計(jì)算,彼此間幾乎沒(méi)有依賴關(guān)系2023-03-03關(guān)于try 和 throw 簡(jiǎn)單使用示例
每過(guò)一段時(shí)間,就總是會(huì)對(duì)try有點(diǎn)生疏,特別寫(xiě)了個(gè)程序來(lái)測(cè)試以下,有時(shí)候 throw是底層拋出來(lái)的,你不處理,默認(rèn)就throw了2013-08-08SpringBoot創(chuàng)建自定義starter詳解
這篇文章主要介紹了SpringBoot創(chuàng)建自定義starter詳解,Starter是Spring Boot中的一個(gè)非常重要的概念,Starter相當(dāng)于模塊,它能將模塊所需的依賴整合起來(lái)并對(duì)模塊內(nèi)的Bean根據(jù)環(huán)境(條件)進(jìn)行自動(dòng)配置,需要的朋友可以參考下2024-01-01Spring Cloud Data Flow初體驗(yàn)以Local模式運(yùn)行
這篇文章主要介紹了Spring Cloud Data Flow初體驗(yàn)以Local模式運(yùn)行,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08單例模式垃圾回收_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了單例模式垃圾回收的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08解決JAVA遍歷List集合,刪除數(shù)據(jù)時(shí)出現(xiàn)的問(wèn)題
這篇文章主要介紹了解決JAVA遍歷List集合時(shí),刪除數(shù)據(jù)出現(xiàn)的問(wèn)題,文中講解非常細(xì)致,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下2020-07-07SpringBoot項(xiàng)目使用slf4j的MDC日志打點(diǎn)功能(最新推薦)
這篇文章主要介紹了SpringBoot項(xiàng)目使用slf4j的MDC日志打點(diǎn)功能,本文通過(guò)示例代碼給大家介紹非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06