最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java 遍歷Map的5種方法示例詳解

 更新時(shí)間:2025年06月19日 09:34:10   作者:啊健的影子  
在 java 中,Map遍歷的方式主要有for循環(huán)、迭代器 Iterator 、Lambda 表達(dá)式遍歷的 forEach、Stream API 這幾種方式,下面給大家介紹java 遍歷Map的5種方法,感興趣的朋友一起看看吧

Java中的Map是一種常見(jiàn)的數(shù)據(jù)結(jié)構(gòu),用于存儲(chǔ)鍵值對(duì)。遍歷Map的方法主要有以下幾種:

1、使用 for 循環(huán)遍歷

Map<String, String> myMap = new HashMap<>();
myMap.put("key1", "value1");
myMap.put("key2", "value2");
for(Map.Entry<String, String> entry : myMap.entrySet()){
  String key = entry.getKey();
  String value = entry.getValue();
    System.out.println(key + ": " + value);
}

運(yùn)行結(jié)果:

key1: value1
key2: value2

上面這個(gè)示例通過(guò)entrySet()方法獲取Map中所有鍵值對(duì)的集合,然后使用for循環(huán)遍歷該集合。在循環(huán)內(nèi)部,使用getKey()和getValue()方法分別獲取鍵和值。

2、使用 keySet、values 分別遍歷鍵和值

Map<String, String> myMap = new HashMap<>();
myMap.put("key1", "value1");
myMap.put("key2", "value2");
// 遍歷Map的鍵
for(String key : myMap.keySet()){
  System.out.println(key);
}
// 遍歷Map的值
for(String value : myMap.values()){
  System.out.println(value);
}

運(yùn)行結(jié)果:

key1
key2
value1
value2

第一個(gè)遍歷,通過(guò)keySet()方法獲取Map中所有鍵的集合,然后使用for循環(huán)遍歷該集合。

第二個(gè)遍歷,通過(guò)values()方法獲取Map中所有值的集合,然后使用for循環(huán)遍歷該集合。

需要注意的是,在Java中,Map的鍵和值也可以是任意類型,但是在使用for-each循環(huán)或迭代器遍歷時(shí),需要使用泛型指定鍵值對(duì)的類型,并使用Map.Entry類來(lái)表示鍵值對(duì)。

3、使用迭代器 Iterator 遍歷

Map<String, String> myMap = new HashMap<>();
myMap.put("key1", "value1");
myMap.put("key2", "value2");
Iterator<Map.Entry<String, String>> iterator = myMap.entrySet().iterator();
while(iterator.hasNext()){
  Map.Entry<String, String> entry = iterator.next();
  String key = entry.getKey();
  String value = entry.getValue();
  System.out.println(key + ": " + value);
}

運(yùn)行結(jié)果:

key1: value1
key2: value2

這個(gè)方法使用了Java中的Iterator迭代器,遍歷Map中的所有鍵值對(duì)。

首先通過(guò)entrySet()方法獲取Map中所有鍵值對(duì)的集合,然后使用iterator()方法返回一個(gè)迭代器對(duì)象。

在循環(huán)中,使用hasNext()方法判斷是否還有下一個(gè)元素,如果有,則使用next()方法獲取該元素,并使用getKey()和getValue()方法分別獲取鍵和值。

需要注意的是,當(dāng)在遍歷Map的同時(shí)進(jìn)行修改操作時(shí),可能會(huì)拋出ConcurrentModificationException異常。為了避免這種情況,可以使用并發(fā)Map的實(shí)現(xiàn)類如ConcurrentHashMap。

4、使用 Lambda 表達(dá)式的 forEach

Java 8以及以上版本中,還可以使用 Lambda 表達(dá)式來(lái)遍歷Map:

Map<String, String> myMap = new HashMap<>();
myMap.put("key1", "value1");
myMap.put("key2", "value2");
// 遍歷Map的鍵值對(duì)
myMap.forEach((key, value) -> {
  System.out.println(key + ": " + value);
});

運(yùn)行結(jié)果:

key1: value1
key2: value2

在這個(gè)例子中,我們通過(guò)Lambda表達(dá)式定義了要執(zhí)行的操作,即輸出鍵和值。這種方法可以使代碼更加簡(jiǎn)潔。

需要注意的是,以上遍歷Map的示例僅適用于HashMap、TreeMap等實(shí)現(xiàn)了Map接口的類。對(duì)于ConcurrentHashMap、LinkedHashMap等其他實(shí)現(xiàn),可能有不同的遍歷方法或限制。

5、使用 Stream API遍歷

同樣是在Java 8及以上版本中,也可以使用 Stream API來(lái)遍歷Map。

// 遍歷Map的鍵值對(duì)
myMap.entrySet().stream()
  .forEach(entry -> {
    System.out.println(entry.getKey() + ": " + entry.getValue());
  });
// 遍歷Map的鍵myMap.keySet().stream()
myMap.keySet().forEach(key -> {
    System.out.println(key);
  });
// 遍歷Map的值myMap.values().stream()
myMap.values().forEach(value -> {
    System.out.println(value);
  });

運(yùn)行結(jié)果:

key1: value1
key2: value2
key1
key2
value1
value2

首先通過(guò)entrySet()方法獲取Map中所有鍵值對(duì)的集合,然后使用stream()方法將其轉(zhuǎn)換成一個(gè)流。在流上,可以使用forEach()方法對(duì)每個(gè)元素執(zhí)行指定的操作。

需要注意的是,在使用Stream API時(shí),應(yīng)該盡量避免進(jìn)行修改操作,因?yàn)橐坏?duì)源數(shù)據(jù)進(jìn)行了修改,會(huì)導(dǎo)致Stream計(jì)算結(jié)果不可預(yù)測(cè)。如果需要修改,應(yīng)該使用collect()方法將結(jié)果收集到一個(gè)新的數(shù)據(jù)結(jié)構(gòu)中。

需要注意的Map刪除操作

在Java中,執(zhí)行Map的刪除操作時(shí),需要注意不能使用for-each循環(huán)遍歷并刪除元素。這是因?yàn)?,在使用for-each循環(huán)遍歷Map時(shí),實(shí)際上是通過(guò)Map.entrySet()返回的Set集合來(lái)進(jìn)行遍歷的,而在使用Set集合的迭代器進(jìn)行遍歷時(shí),如果修改了集合中的元素(例如:刪除),則會(huì)拋出ConcurrentModificationException異常。

因此,在Java中執(zhí)行Map的刪除操作,一般使用迭代器或者直接指定key進(jìn)行刪除。

6、使用迭代器刪除Map中的某個(gè)元素:

Map<String, String> myMap = new HashMap<>();
myMap.put("key1", "value1");
myMap.put("key2", "value2");
Iterator<Map.Entry<String, String>> iterator = myMap.entrySet().iterator();
while (iterator.hasNext()) {
    Map.Entry<String, String> entry = iterator.next();
    if (entry.getKey().equals("key1")) {
        iterator.remove();
    }
}

或者使用remove方法指定key進(jìn)行刪除:

myMap.remove("key1");

需要注意的是,使用remove方法指定key進(jìn)行刪除時(shí),如果key不存在,remove方法會(huì)返回null并不會(huì)拋出異常。
最后總結(jié)
在 java 中,Map遍歷的方式主要有for循環(huán)、迭代器 Iterator 、Lambda 表達(dá)式遍歷的 forEach、Stream API 這幾種方式。

到此這篇關(guān)于java 遍歷Map的5種方法的文章就介紹到這了,更多相關(guān)java遍歷map內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 如何使用BeanUtils.copyProperties進(jìn)行對(duì)象之間的屬性賦值

    如何使用BeanUtils.copyProperties進(jìn)行對(duì)象之間的屬性賦值

    這篇文章主要介紹了使用BeanUtils.copyProperties進(jìn)行對(duì)象之間的屬性賦值,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • JavaScript異步通信三種玩法實(shí)例代碼

    JavaScript異步通信三種玩法實(shí)例代碼

    在JavaScript中實(shí)現(xiàn)異步編程的方法多種多樣,每種方法都有其特定的應(yīng)用場(chǎng)景和優(yōu)缺點(diǎn),這篇文章主要介紹了JavaScript異步通信三種玩法的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-12-12
  • jvm字符串常量池在什么內(nèi)存區(qū)域問(wèn)題解析

    jvm字符串常量池在什么內(nèi)存區(qū)域問(wèn)題解析

    這篇文章主要介紹了jvm字符串常量池在什么內(nèi)存區(qū)域的問(wèn)題解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • springboot之SpringApplication生命周期和事件機(jī)制解讀

    springboot之SpringApplication生命周期和事件機(jī)制解讀

    這篇文章主要介紹了springboot之SpringApplication生命周期和事件機(jī)制,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • java中的類型自動(dòng)轉(zhuǎn)換機(jī)制解析

    java中的類型自動(dòng)轉(zhuǎn)換機(jī)制解析

    這篇文章主要介紹了java中的類型自動(dòng)轉(zhuǎn)換機(jī)制,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • SpringBoot自定義啟動(dòng)界面的實(shí)現(xiàn)代碼

    SpringBoot自定義啟動(dòng)界面的實(shí)現(xiàn)代碼

    實(shí)現(xiàn)自定義啟動(dòng)動(dòng)畫是一項(xiàng)有趣的任務(wù),雖然Spring Boot本身不提供內(nèi)置的動(dòng)畫功能,但可以通過(guò)一些技巧來(lái)實(shí)現(xiàn),本文主要以Demo的形式展示,再者下面的Demo都可以聯(lián)合使用,需要的朋友可以參考下
    2024-07-07
  • java微信server錄音下載到自己server

    java微信server錄音下載到自己server

    這篇文章主要為大家詳細(xì)介紹了java微信server錄音下載到自己server的相關(guān)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Spring使用redis遇到的問(wèn)題及解決方案

    Spring使用redis遇到的問(wèn)題及解決方案

    這篇文章主要介紹了Spring使用redis遇到的問(wèn)題及解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • mybatis 中 foreach collection的用法小結(jié)(三種)

    mybatis 中 foreach collection的用法小結(jié)(三種)

    這篇文章主要介紹了mybatis 中 foreach collection的用法小結(jié)(三種),需要的朋友可以參考下
    2017-10-10
  • 使用JSONObject.toJSONString 過(guò)濾掉值為空的key

    使用JSONObject.toJSONString 過(guò)濾掉值為空的key

    這篇文章主要介紹了使用JSONObject.toJSONString 過(guò)濾掉值為空的key,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03

最新評(píng)論

延寿县| 韶关市| 河池市| 时尚| 上思县| 烟台市| 顺平县| 阿坝县| 彝良县| 紫云| 新沂市| 乡宁县| 承德市| 师宗县| 常熟市| 色达县| 赤峰市| 广水市| 金山区| 讷河市| 民权县| 微博| 内黄县| 惠州市| 富顺县| 北海市| 河池市| 双城市| 谢通门县| 沅陵县| 同德县| 泾川县| 扎囊县| 香河县| 博客| 新丰县| 苏尼特左旗| 台州市| 石首市| 榆林市| 鸡东县|