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

Java基礎(chǔ)教程之Map遍歷的5種方式

 更新時間:2024年01月28日 11:30:13   作者:多多鐘意你吖  
Map作為Java中的一種集合,以鍵值對的形式存放一批數(shù)據(jù),經(jīng)常會被我們應(yīng)用在項目中,這篇文章主要給大家介紹了關(guān)于Java基礎(chǔ)教程之Map遍歷的5種方式,需要的朋友可以參考下

前言

首先我們需要把map轉(zhuǎn)換為set進行遍歷,可使用entrySet和keySet共2種方式進行轉(zhuǎn)換。

每一種情況都可以采用下面的方式進行遍歷:

分別是使用迭代器iterator()遍歷;增強for循環(huán)遍歷;forEach+lambda循環(huán)遍歷,將循環(huán)簡化;還可以直接通過方法獲取Collection集合在進行便利;最后一個就是使用streams流遍歷。

創(chuàng)建一個集合

    HashMap<Integer, String> map = new HashMap<>();
        map.put(1,"ljj");
        map.put(2,"zsy");
        map.put(3,"sxf");
        map.put(4,"wjx");
    }

方式一:Iterator 迭代器遍歷

map.entrySet().iterator();

map.keySet().iterator();

//Iterator 迭代器遍歷
    public static void iterator(Map<Integer, String> map){
        System.out.println("---使用entrySet()迭代器進行遍歷map集合---");
        Iterator<Map.Entry<Integer, String>> entryIterator = map.entrySet().iterator();
        while (entryIterator.hasNext()){
            Map.Entry<Integer, String> entry = entryIterator.next();
            System.out.println(entry.getKey()+":"+entry.getValue());
        }
        System.out.println("---使用KeySet()迭代器進行遍歷map集合---");
        Iterator<Integer> keySetIterator = map.keySet().iterator();
        while (keySetIterator.hasNext()){
            Integer key = keySetIterator.next();
            System.out.println(key+":"+map.get(key));
        }

    }

方式二:For Each方式遍歷

map.forEach(BiConsumer action)

 //For Each方式遍歷
    public static void forEach_map(Map<Integer,String> map){
        System.out.println("map.forEach(BiConsumer action)方法遍歷map");
        map.forEach((key,value) -> System.out.println(key+" : "+value));
        
    }

方式三:獲取Collection集合

map.values().forEach()

map中的values()方法,通過這個方法可以直接獲取Map中存儲所有值的Collection集合

 //values()方法
    public static void Collection_forEach(Map<Integer,String> map){
        System.out.println("獲取map集合的values值集合對象,進行forEach遍歷");
        //Map中的values()方法,通過這個方法可以直接獲取Map中存儲所有值的Collection集合
        Collection<String> values = map.values();
        values.forEach( v -> System.out.println(v));
    }

方式四:增強for遍歷map

map.entrySet().for

map.keySet().for

    public static void for_plus(Map<Integer,String> map){
        System.out.println("增強for循環(huán),Map.Entry<>");
        for (Map.Entry<Integer,String> entry : map.entrySet()){
            String value = entry.getValue();
            System.out.println(value);
        }
        System.out.println("增強for循環(huán),map.keySet");
        for (Integer key : map.keySet()){
            String value = map.get(key);
            System.out.println(value);
        }
    }

方法五:Stream流遍歷

map.entrySet().stream().forEach()

map.keySet().stream().forEach()

//Stream流遍歷
    public static void stream_list(Map<Integer,String> map){
        System.out.println("map.entrySet().stream.forEach()遍歷—Stream流遍歷");
        map.entrySet().stream().forEach((Map.Entry<Integer,String> entry) -> {
            System.out.print(entry.getKey()+":");
            System.out.println(entry.getValue());
        });
        System.out.println("map.keySet().stream.forEach()遍歷—Stream流遍歷");
        map.keySet().stream().forEach(key -> {
            System.out.println(map.get(key));
        });
    }

附:遍歷Map的性能比較

不同的遍歷方式對Map的性能有影響,下面通過實驗來看看它們之間的性能差異。

實驗代碼如下:

Map map = new HashMap<>();
Random random = new Random();
for (int i = 0; i < 1000000; i++) {
    map.put(random.nextInt(1000000), "some value");
}

long start = System.currentTimeMillis();
for (Map.Entry entry : map.entrySet()) {
    // do nothing
}
long end = System.currentTimeMillis();
System.out.println("遍歷entrySet耗時:" + (end - start) + "ms");

start = System.currentTimeMillis();
for (Integer key : map.keySet()) {
    // do nothing
}
end = System.currentTimeMillis();
System.out.println("遍歷keySet耗時:" + (end - start) + "ms");

start = System.currentTimeMillis();
for (String value : map.values()) {
    // do nothing
}
end = System.currentTimeMillis();
System.out.println("遍歷values耗時:" + (end - start) + "ms");

實驗結(jié)果(遍歷1000000個元素,單位:毫秒):

遍歷entrySet耗時:14ms

遍歷keySet耗時:16ms

遍歷values耗時:33ms

從實驗結(jié)果來看,通過entrySet遍歷Map是最快的,而通過values遍歷是最慢的。

寫到最后

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

相關(guān)文章

  • Java樹形菜單的創(chuàng)建

    Java樹形菜單的創(chuàng)建

    這篇文章主要為大家詳細介紹了Java圖形用戶界面中樹形菜單的創(chuàng)建樹形菜單的創(chuàng)建,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2015-10-10
  • Java三種移位運算符原理解析

    Java三種移位運算符原理解析

    這篇文章主要介紹了Java三種移位運算符原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-02-02
  • Java封裝Redis非阻塞分布式鎖徹底解決表單重復(fù)提交主鍵沖突問題

    Java封裝Redis非阻塞分布式鎖徹底解決表單重復(fù)提交主鍵沖突問題

    本文基于原生RedisTemplate封裝通用非阻塞分布式鎖工具類,實現(xiàn)鎖邏輯與業(yè)務(wù)邏輯解耦,兼顧易用性與安全性,同時解決鎖與事務(wù)配合、鎖釋放時機、失敗重試等核心坑點,感興趣的朋友跟隨小編一起看看吧
    2026-03-03
  • SpringBoot 多環(huán)境配置和啟動詳解

    SpringBoot 多環(huán)境配置和啟動詳解

    這篇文章主要為大家介紹了SpringBoot多環(huán)境配置和啟動詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-10-10
  • Java?實現(xiàn)字符串SHA1加密方法

    Java?實現(xiàn)字符串SHA1加密方法

    這篇文章主要介紹了Java?實現(xiàn)字符串SHA1加密方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • java并發(fā)編程StampedLock高性能讀寫鎖詳解

    java并發(fā)編程StampedLock高性能讀寫鎖詳解

    這篇文章主要為大家介紹了java并發(fā)編程StampedLock高性能讀寫鎖的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • java開發(fā)之內(nèi)部類的用法

    java開發(fā)之內(nèi)部類的用法

    本篇文章介紹了,java開發(fā)之內(nèi)部類的用法。需要的朋友參考下
    2013-05-05
  • servlet實現(xiàn)文件下載的步驟及說明詳解

    servlet實現(xiàn)文件下載的步驟及說明詳解

    這篇文章主要為大家詳細介紹了servlet實現(xiàn)文件下載的步驟及說明,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • 一文讓你了解透徹Java中的IO模型

    一文讓你了解透徹Java中的IO模型

    本文只是說明了IO模型,讓你了解IO模型是什么,怎么區(qū)分IO模型,以及分析了Java中的三種IO模型,本文是純理論知識,看完之后會讓你對IO有更加深刻的理解,感興趣的同學可以參考一下
    2023-05-05
  • 詳解Springboot 注入裝配到IOC容器方式

    詳解Springboot 注入裝配到IOC容器方式

    今天通過實例代碼給大家介紹了Springboot 注入裝配到IOC容器方式,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,感興趣的朋友跟隨小編一起看看吧
    2021-10-10

最新評論

房产| 景谷| 延寿县| 独山县| 兴化市| 白水县| 南雄市| 阿城市| 化州市| 久治县| 盱眙县| 金昌市| 汶上县| 丰都县| 宜兰市| 罗城| 颍上县| 广州市| 水富县| 海宁市| 信宜市| 襄樊市| 长沙县| 沁阳市| 双峰县| 孟津县| 安徽省| 柳林县| 张家口市| 宣化县| 晋城| 江华| 周至县| 临洮县| 阿坝县| 华容县| 启东市| 彭水| 紫金县| 新田县| 朔州市|