大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 兩種HashMap遍歷方式

兩種HashMap遍歷方式

更新時間:2022-01-05 11:48:33 來源:動力節(jié)點 瀏覽900次

一般來說,有5種遍歷,其中一種只遍歷值,4種完全遍歷整個地圖。分類及原理介紹如下

劃分

Map遍歷:

遍歷方法:分為foreach和iterator兩種,foreach效率更高。這就是使用的方法和遍歷因子的區(qū)別;

遍歷因子:按照遍歷因子劃分,那么有keySet()和entrySet()兩種,map的內(nèi)部函數(shù)是通過Map.Entry接口實現(xiàn)的,keySet()是直接獲取key,entrySet是獲取每個條目先,然后使用條目的 getKey() 和 getValue() 完成遍歷,速度會更好。

CreateTraversal.java(使用示例)

import lombok.extern.slf4j.Slf4j;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/**
 * @Author: renjiaxin
 * @Despcription:
 * @Date: Created in 2018/8/17 9:52
 * @Modified by:
 */
@Slf4j
public class CreateTraversal {
    public static Map<String, Object> createMap() {
        Map<String, Object> map = new HashMap<>();
        map.put("Sky Sea Wing", "36C");
                 map.put("Ozawa Maria", "42F");
                 map.put("", "");//Yes, it can be defined like this
                 map.put(null, null);/*key can be null, but there can only be one, and only one works*/
        map.put(null, null);
                 map.put("Hatano Yui", "36C");
                 map.put("Aoi Sola", "28B");
                 map.put(" ", "");//Yes, it can be defined like this
                 map.put("Ogura Yuko", "26A");
                 map.put("Fukada Kyoko", null);
                 map.put("Amamiya piano sound", "36C");
                 map.put("Hojo Mafei", null);//value is null, data is temporarily empty, value is null and there can be multiple
                 map.put("Green Wasabi", "43F");
        return map;
    }
    public static void traversalMap(Map<String, Object> map, int type) {
        if (type < 0 || type > 4) {
                         log.warn("Wrong traversal type, type:{}", type);
        }
        switch (type) {
            case 0:
                partForEachTraversal(map);
                break;
            case 1:
                forEachKeySetTraversal(map);
                break;
            case 2:
                forEachEntrySetTraversal(map);
                break;
            case 3:
                iteratorKeySetTraversal(map);
                break;
            case 4:
                                 System.out.println("Recommended map.entrySet()+iterator");
                iteratorEntrySetTraversal(map);
                break;
            default:
                iteratorEntrySetTraversal(map);
        }
    }
         /*It just traversed the values, not the keys*/
    private static void partForEachTraversal(Map<String, Object> map) {
                 System.out.println("\nUse values ??to loop, can only traverse values, not keys");
        long start = System.currentTimeMillis();
        for (Object value : map.values()) {
            System.out.print(value + " ");
        }
        long end = System.currentTimeMillis();
        long time = start - end;
                 System.out.println("\nmap size n: "+ map.values().size());
                 System.out.println("The running time is: "+ time + "ms");
        System.out.println("");
    }
    /*map.keySet()+foreach*/
    private static void forEachKeySetTraversal(Map<String, Object> map) {
                 System.out.println("map.keySet()+foreach, complete traversal, slow speed!");
        long start = System.currentTimeMillis();
        for (String key : map.keySet()) {
            System.out.print("key: " + key + ", values: " + map.get(key) + "; ");
        }
        long end = System.currentTimeMillis();
        long time = start - end;
                 System.out.println("\nmap size n: "+ map.values().size());
                 System.out.println("The running time is: "+ time + "ms");
        System.out.println("");
    }
    /*map.entrySet()+foreach*/
    private static void forEachEntrySetTraversal(Map<String, Object> map) {
                 System.out.println("map.entrySet()+foreach, complete traversal, fast!");
                 System.out.println("Map.Entry is an interface inside the Map class, which provides the main methods and functions of the Map class");
        long start = System.currentTimeMillis();
                 Set<Map.Entry<String, Object>> entrySet = map.entrySet();//Take out this set
        for (Map.Entry<String, Object> entry : entrySet) {/*---*/
            System.out.print("key= " + entry.getKey() + " and value= " + entry.getValue() + "; ");
        }
        long end = System.currentTimeMillis();
        long time = start - end;
                 System.out.println("\nmap size n: "+ map.values().size());
                 System.out.println("The running time is: "+ time + "ms");
        System.out.println("");
    }
    /*map.keySet()+iterator*/
    private static void iteratorKeySetTraversal(Map<String, Object> map) {
                 System.out.println("map.keySet()+iterator, complete traversal");
        long start = System.currentTimeMillis();
        Iterator<String> it = map.keySet().iterator();/**/
        while (it.hasNext()) {
            System.out.print("key :" + it.next() + " , value: " + map.get(it.next()));
        }
        long end = System.currentTimeMillis();
        long time = start - end;
                 System.out.println("\nmap size n: "+ map.values().size());
                 System.out.println("The running time is: "+ time + "ms");
        System.out.println("");
    }
    /*map.entrySet()+iterator*/
    private static void iteratorEntrySetTraversal(Map<String, Object> map) {
                 System.out.println("map.entrySet()+iterator, complete traversal, the recommended approach!");
        long start = System.currentTimeMillis();
        //Iterator it = map.entrySet().iterator();/*---*/
                 Iterator<Map.Entry<String, Object>> it = map.entrySet().iterator();//Same up and down, this one is clearer
        while (it.hasNext()) {
            System.out.print("key :" + it.next() + " , value: " + map.get(it.next()));
        }
        long end = System.currentTimeMillis();
        long time = start - end;
                 System.out.println("\nmap size n: "+ map.values().size());
                 System.out.println("The running time is: "+ time + "ms");
        System.out.println("");
    }
    public static void main(String[] args) {
                 System.out.println("Because map uses a key-value form of data structure, there is no position in digital form, so for(int i=0;i<n;i++ form)");
        Map<String, Object> mp = createMap();
        traversalMap(mp, 0);
        traversalMap(mp, 1);
        traversalMap(mp, 2);
        traversalMap(mp, 3);
        traversalMap(mp, 4);
    }
}

 

提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 亚洲欧美日韩中文综合在线不卡 | 久久www免费人成精品 | 久久精品人人做人人爱爱 | 欧美大片天天免费看视频 | 色姑娘综合 | 国产精品毛片一区 | 亚洲国产成人精品一区二区三区 | 2020国产精品永久在线观看 | 精品哟哟国产在线观看 | 最新亚洲国产有精品 | 日韩欧美在线看 | 久久99国产综合色 | 午夜影院福利 | 国产精品第二页在线播放 | 国产日韩欧美一区二区 | 国产精品视频男人的天堂 | 免费视频精品一区二区 | 大乳女做爰中文字幕 | 免费两性的视频网站 | 欧美日产 | 一级片短视频 | 国产精品高清久久久久久久 | 香蕉视频一级片 | 日本不卡影院 | 91成人影院未满十八勿入 | 香蕉人精品视频多人免费永久视频 | 亚洲综合日韩在线亚洲欧美专区 | 久久综合九色综合欧洲 | 免费观看a毛片一区二区不卡 | 日韩亚洲欧美性感视频影片免费看 | 久久91精品国产91久久跳舞 | 中文字幕亚洲欧美一区 | 老司机久久精品视频 | 久久精品亚瑟全部免费观看 | 狠狠亚洲丁香综合久久 | 亚洲精品第一区二区在线 | 99九九久久 | 麻豆国产精品 | 亚洲欧美日韩国产综合专区 | 日韩欧美国产一区二区三区四区 | 91视频毛片 |