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

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

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

Java中的Map是一種常見的數(shù)據(jù)結(jié)構(gòu),用于存儲鍵值對。遍歷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

上面這個示例通過entrySet()方法獲取Map中所有鍵值對的集合,然后使用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

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

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

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

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

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

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

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

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

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

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

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

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

key1: value1
key2: value2

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

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

5、使用 Stream API遍歷

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

// 遍歷Map的鍵值對
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

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

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

需要注意的Map刪除操作

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

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

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

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)行刪除時,如果key不存在,remove方法會返回null并不會拋出異常。
最后總結(jié)
在 java 中,Map遍歷的方式主要有for循環(huán)、迭代器 Iterator 、Lambda 表達(dá)式遍歷的 forEach、Stream API 這幾種方式。

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Spring使用redis遇到的問題及解決方案

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

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

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

    使用JSONObject.toJSONString 過濾掉值為空的key

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

最新評論

江西省| 定远县| 玉龙| 汝城县| 河曲县| 秀山| 柏乡县| 离岛区| 沙田区| 沾化县| 长兴县| 西丰县| 米脂县| 海口市| 嘉荫县| 沙田区| 侯马市| 柏乡县| 云浮市| 长宁区| 定日县| 辉南县| 兴化市| 兴国县| 三门峡市| 龙游县| 广昌县| 和田县| 鄂托克前旗| 临海市| 葫芦岛市| 通道| 湘潭市| 五峰| 鄂州市| 永春县| 宜黄县| 榆中县| 西城区| 黄大仙区| 滨州市|