Java遍歷Map對(duì)象集合的六種方式代碼示例
Java如何遍歷Map對(duì)象的4種方法
今天比昨天,更優(yōu)秀
Map簡(jiǎn)介
- Map是用于保存具有映射關(guān)系的數(shù)據(jù),保存兩組值,key和value,這兩組值可以是任何應(yīng)用類(lèi)型的數(shù)據(jù)。
- Map典型的實(shí)現(xiàn)類(lèi)是HashMap、Hashtable(HashMap子類(lèi)還有LinkedHashMap)、SortedMap子接口及實(shí)現(xiàn)類(lèi)TreeMap、WeakHashMap、IndentityHashMap等
Map遍歷第一種
Map<String, String> map = new HashMap<String, String>(); for (Map.Entry <String, String> entry : map.entrySet()) { System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue()); }
注意:如果Map值是空的則會(huì)報(bào)錯(cuò),拋出NullPointerException異常。
Map遍歷第二種
Map<String, String> map = new HashMap<String, String>(); //遍歷map中的鍵 for (String key : map.keySet()) { System.out.println("Key = " + key); } //遍歷map中的值 for (Integer value : map.values()) { System.out.println("Value = " + value); }
Map遍歷第三種(使用Iterator遍歷)
Map<String, String> map = new HashMap<String, String>(); Iterator<Map.Entry<String, String>> entries = map.entrySet().iterator(); while (entries.hasNext()) { Map.Entry<String, String> entry = entries.next(); System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue()); }
Map遍歷第四種
Map<String, String> map = new HashMap<String, String>(); for (String key : map.keySet()) { Integer value = map.get(key); System.out.println("Key = " + key + ", Value = " + value); }
Map遍歷第五種
Map<String, String> map = new HashMap<String, String>(); map.forEach((key, value) -> { System.out.println("Key = " + key + ", Value = " + value); });
Map遍歷第六種
Map<String, String> map = new HashMap<String, String>(); for (int i = 0; i < map.size(); i++) { String key = keySet.get(i); String Value = map.get(key); System.out.println("Key = " + key + ", Value = " + value); }
大家可以根據(jù)自己需要,自由選擇。
Map集合的應(yīng)用有很多,以下是一些常見(jiàn)的應(yīng)用場(chǎng)景:
統(tǒng)計(jì)詞頻:將文本中出現(xiàn)的單詞作為Key,出現(xiàn)次數(shù)作為Value存儲(chǔ)在Map集合中,可以方便地統(tǒng)計(jì)每個(gè)單詞在文本中出現(xiàn)的次數(shù)。
存儲(chǔ)配置信息:將配置文件中的配置項(xiàng)和對(duì)應(yīng)的配置值存儲(chǔ)在Map集合中,可以方便地讀取和修改配置信息。
緩存數(shù)據(jù):將經(jīng)常使用的數(shù)據(jù)存儲(chǔ)在Map集合中,可以提高程序的運(yùn)行效率,避免頻繁訪問(wèn)數(shù)據(jù)庫(kù)或文件系統(tǒng)。
保存用戶(hù)信息:將用戶(hù)ID作為Key,用戶(hù)信息作為Value存儲(chǔ)在Map集合中,可以實(shí)現(xiàn)對(duì)用戶(hù)信息的快速訪問(wèn)和修改。
實(shí)現(xiàn)圖結(jié)構(gòu):使用Map集合可以方便地實(shí)現(xiàn)圖結(jié)構(gòu),其中Key表示圖中的節(jié)點(diǎn),Value表示與該節(jié)點(diǎn)相鄰的節(jié)點(diǎn)和邊的屬性。
實(shí)現(xiàn)緩存一致性:在分布式系統(tǒng)中,使用Map集合可以方便地實(shí)現(xiàn)緩存一致性,其中不同節(jié)點(diǎn)上的Map集合存儲(chǔ)相同的緩存數(shù)據(jù),通過(guò)協(xié)調(diào)不同節(jié)點(diǎn)上的更新操作可以保證緩存數(shù)據(jù)的一致性。
Map集合的應(yīng)用有以下幾個(gè)方面:
存儲(chǔ)鍵值對(duì):Map集合可以存儲(chǔ)鍵值對(duì),其中鍵和值都可以是任意數(shù)據(jù)類(lèi)型,鍵值對(duì)之間是一一對(duì)應(yīng)的關(guān)系??梢酝ㄟ^(guò)遍歷Map集合,獲取鍵值對(duì)的值,實(shí)現(xiàn)對(duì)數(shù)據(jù)的訪問(wèn)和操作。
數(shù)據(jù)去重:Map集合的鍵具有唯一性,因此可以利用這個(gè)特點(diǎn)進(jìn)行數(shù)據(jù)去重操作。例如,在處理用戶(hù)提交的表單數(shù)據(jù)時(shí),可以使用Map集合來(lái)存儲(chǔ)用戶(hù)提交的數(shù)據(jù),然后根據(jù)鍵值對(duì)的唯一性,進(jìn)行去重操作。
統(tǒng)計(jì)數(shù)據(jù):Map集合可以存儲(chǔ)不同的數(shù)據(jù)值,并統(tǒng)計(jì)每個(gè)數(shù)據(jù)值出現(xiàn)的次數(shù)。例如,在統(tǒng)計(jì)某個(gè)文本中每個(gè)單詞出現(xiàn)的次數(shù)時(shí),可以使用Map集合來(lái)存儲(chǔ)每個(gè)單詞出現(xiàn)的次數(shù)。
緩存數(shù)據(jù):Map集合可以用來(lái)緩存數(shù)據(jù),提高數(shù)據(jù)訪問(wèn)的效率。例如,在Web開(kāi)發(fā)中,可以使用Map集合來(lái)緩存一些經(jīng)常使用的數(shù)據(jù),減少對(duì)數(shù)據(jù)庫(kù)的訪問(wèn)次數(shù),提高系統(tǒng)的性能。
實(shí)現(xiàn)自定義數(shù)據(jù)類(lèi)型的映射:Map集合中的鍵和值可以是任意對(duì)象,因此可以通過(guò)Map集合來(lái)實(shí)現(xiàn)自定義數(shù)據(jù)類(lèi)型的映射。例如,在處理圖形界面中的控件時(shí),可以使用Map集合來(lái)實(shí)現(xiàn)控件的名稱(chēng)和控件對(duì)象之間的映射關(guān)系。
總結(jié)
到此這篇關(guān)于Java遍歷Map對(duì)象集合的六種方式的文章就介紹到這了,更多相關(guān)Java遍歷Map對(duì)象集合內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
IDEA插件之Mybatis Log plugin 破解及安裝方法
這篇文章主要介紹了IDEA插件之Mybatis Log plugin 破解方法及安裝方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-09-09Java 中執(zhí)行動(dòng)態(tài)表達(dá)式語(yǔ)句前中后綴Ognl、SpEL、Groovy、Jexl3
這篇文章主要介紹了Java 中執(zhí)行動(dòng)態(tài)表達(dá)式語(yǔ)時(shí)的句前中后綴Ognl、SpEL、Groovy、Jexl3的相關(guān)資料,需要的朋友可以參考下面文章的詳細(xì)介紹2021-09-09Java實(shí)現(xiàn)Consul/Nacos根據(jù)GPU型號(hào)、顯存余量執(zhí)行負(fù)載均衡的步驟詳解
這篇文章主要介紹了Java實(shí)現(xiàn)Consul/Nacos根據(jù)GPU型號(hào)、顯存余量執(zhí)行負(fù)載均衡的步驟詳解,本文分步驟結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2025-04-04java并發(fā)編程工具類(lèi)PriorityBlockingQueue優(yōu)先級(jí)隊(duì)列
這篇文章主要為大家介紹了java并發(fā)編程工具類(lèi)PriorityBlockingQueue優(yōu)先級(jí)隊(duì)列的方法示例應(yīng)用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-03-03SpringMVC中的ConversionServiceExposingInterceptor工具類(lèi)解析
這篇文章主要介紹了SpringMVC中的ConversionServiceExposingInterceptor工具類(lèi)解析,ConversionServiceExposingInterceptor是Spring MVC的一個(gè)HandlerInterceptor,用于向請(qǐng)求添加一個(gè)屬性,需要的朋友可以參考下2023-12-12Thread線程的基礎(chǔ)知識(shí)及常見(jiàn)疑惑點(diǎn)總結(jié)
在本篇內(nèi)容里小編給大家分享的是關(guān)于Thread線程的基礎(chǔ)知識(shí)及常見(jiàn)疑惑點(diǎn),對(duì)此有學(xué)習(xí)需求的朋友們可以學(xué)習(xí)參考下。2019-05-05springMvc異步的DeferredResult long?polling應(yīng)用示例解析
這篇文章主要為大家介紹了springMvc中DeferredResult的long?polling應(yīng)用示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03SpringBoot沒(méi)有讀取到application.yml問(wèn)題及解決
這篇文章主要介紹了SpringBoot沒(méi)有讀取到application.yml問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12Java7之forkjoin簡(jiǎn)介_(kāi)動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
Java7引入了Fork Join的概念,來(lái)更好的支持并行運(yùn)算。接下來(lái)通過(guò)本文給大家分享Java7之forkjoin簡(jiǎn)介,感興趣的朋友一起看看吧2017-06-06