zoukankan      html  css  js  c++  java
  • map遍历方式以及消耗时间

    啥也不别说,直接上代码:忽略说的这句话!

    package com.linyang.ForTest;
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.Iterator;
    import java.util.List;
    import java.util.Map;
    import java.util.Map.Entry;
    import java.util.Set;
    
    public class ForMap {
    
    	// 循环遍历map的方法
    	public static void main(String[] args) {
    		System.out.println("ready");
    		long start = System.currentTimeMillis();
    		Map<String, String> dataMap = new HashMap<String, String>();
    
    		String keyString = "key-";
    		int in = 0;
    
    		for (int i = 0; i < 10000000; i++) {
    			dataMap.put(keyString + i, String.valueOf(i));
    			in = i + 1;
    		}
    		long end = System.currentTimeMillis();
    		long UseTime = end - start;
    		System.out.println("ready time :" + UseTime);
    
    		System.out.println("start");
    		start = System.currentTimeMillis();
    		// 方法一 hashmap entrySet()
    		Iterator it = dataMap.entrySet().iterator();
    		while (it.hasNext()) {
    			Map.Entry entry = (Map.Entry) it.next();
    			Object key = entry.getKey();
    			Object value = entry.getValue();
    //			System.out.println("key=" + key + " value=" + value);
    		}
    		end = System.currentTimeMillis();
    		UseTime = end - start;
    		System.out.println("########## entrySet-UseTime ########## :" + UseTime);
    		// For-Each循环
    		// 方法二
    		start = System.currentTimeMillis();
    		for (Entry<String, String> entry : dataMap.entrySet()) {
    			String key = entry.getKey().toString();
    			String value = entry.getValue().toString();
    //			System.out.println("key=" + key + " value=" + value);
    		}
    		end = System.currentTimeMillis();
    		UseTime = end - start;
    		System.out.println("##########For-Each UseTime########## :" + UseTime);
    
    		// hashmap keySet() 遍历
    		start = System.currentTimeMillis();
    		for (Iterator i = dataMap.keySet().iterator(); i.hasNext();) {
    			Object obj = i.next();
    //			System.out.println("key=" + obj + " value=" + dataMap.get(obj));
    		}
    		end = System.currentTimeMillis();
    		UseTime = end - start;
    		System.out.println("##########hashmap keySet() UseTime########## :" + UseTime);
    		start = System.currentTimeMillis();
    		for (Iterator i = dataMap.values().iterator(); i.hasNext();) {
    			String obj = (String) i.next();
    //			System.out.println(obj);// 循环输出value
    
    		}
    		end = System.currentTimeMillis();
    		UseTime = end - start;
    		System.out.println("##########hashmap keySet() UseTime######### :" + UseTime);
    
    		start = System.currentTimeMillis();
    		// 方法四 treemap keySet()遍历
    		for (Object o : dataMap.keySet()) {
    //			System.out.println("key=" + o + " value=" + dataMap.get(o));
    		}
    		end = System.currentTimeMillis();
    		UseTime = end - start;
    		System.out.println("###########treemap keySet() UseTime######### :" + UseTime);
    
    		// java如何遍历Map <String, ArrayList> map = new HashMap <String,
    		// ArrayList>();
    		start = System.currentTimeMillis();
    		System.out.println("java  遍历Map <String, ArrayList> map = new HashMap<String, ArrayList>();");
    		Map<String, ArrayList> map = new HashMap<String, ArrayList>();
    		Set<String> keys = map.keySet();
    		Iterator<String> iterator = keys.iterator();
    		while (iterator.hasNext()) {
    			String key = iterator.next();
    			ArrayList arrayList = map.get(key);
    			for (Object o : arrayList) {
    				System.out.println(o);
    			}
    		}
    
    		start = System.currentTimeMillis();
    		Map<String, List> map1 = new HashMap<String, List>();
    		for (Map.Entry entry : map1.entrySet()) {
    			String key = entry.getKey().toString();
    			List<String> list = (List) entry.getValue();
    			for (String value : list) {
    				System.out.println(key + "====" + value);
    			}
    		}
    
    	}
    
    }
    

      

    直接说结论:entrySet() 速度最快

    ready
    ready time :15284
    start
    ########## entrySet-UseTime ########## :186
    ##########For-Each UseTime########## :236
    ##########hashmap keySet() UseTime########## :205
    ##########hashmap keySet() UseTime######### :216
    ###########treemap keySet() UseTime######### :201

  • 相关阅读:
    Spring Boot (20) 拦截器
    Spring Boot (19) servlet、filter、listener
    Spring Boot (18) @Async异步
    Spring Boot (17) 发送邮件
    Spring Boot (16) logback和access日志
    Spring Boot (15) pom.xml设置
    Spring Boot (14) 数据源配置原理
    Spring Boot (13) druid监控
    Spring boot (12) tomcat jdbc连接池
    Spring Boot (11) mybatis 关联映射
  • 原文地址:https://www.cnblogs.com/adao21/p/12560685.html
Copyright © 2011-2022 走看看