Java中HashMap的四种遍历方法,及效率比较

概要:

Java中HashMap的四种遍历方法,及效率比较

| |目录

Java中HashMap的四种遍历方法,及效率比较


测试代码

package com.zhenzhigu.com;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry;

public class MapTest {
	public static void main(String[] args){
		HashMap<Integer, String> map = new HashMap<Integer, String>();
		for (int i=0; i<40000; i++){
			map.put(i, "第"+i+"个");
		}
		//循环第一种
		long t1 = System.nanoTime();
		Object key[] = map.keySet().toArray();
		for (int i=0; i<map.size();i++){
			map.get(key[i]);
		}
		long t2 = System.nanoTime(); 
		//循环第二种
		for(Entry<Integer, String> entry:map.entrySet()){
			entry.getValue();
		}
		long t3 = System.nanoTime();
		//循环第三种
		Iterator<Integer> it = map.keySet().iterator();
		while(it.hasNext()){
			Integer ii = (Integer)it.next(); 
			map.get(ii);
		}
		long t4 = System.nanoTime();
		//循环第四种
		for (Integer kk :map.keySet()){
			map.get(kk);
		}
		long t5 = System.nanoTime();
		System.out.println("第一种方法耗时:" + (t2-t1)/1000 + "微秒");
		System.out.println("第二种方法耗时:" + (t3-t2)/1000 + "微秒");
		System.out.println("第三种方法耗时:" + (t4-t3)/1000 + "微秒");
		System.out.println("第四种方法耗时:" + (t5-t4)/1000 + "微秒");
	}
}


结果分析

测试环境:

CPU:Intel酷睿i7-6700k-4.2GH

内存:DDR4-3200MH

系统:Win10-64位

JDK:1.7 x64位


数据量:10

第一种方法耗时:113微秒

第二种方法耗时:34微秒

第三种方法耗时:3微秒

第四种方法耗时:2微秒(最快)


数据量:100

第一种方法耗时:126微秒

第二种方法耗时:44微秒

第三种方法耗时:20微秒

第四种方法耗时:19微秒(最快)


数据量:400

第一种方法耗时:198微秒

第二种方法耗时:76微秒

第三种方法耗时:79微秒

第四种方法耗时:78微秒


数据量:1000

第一种方法耗时:336微秒

第二种方法耗时:140微秒(最快)

第三种方法耗时:210微秒

第四种方法耗时:216微秒


数据量:6000

第一种方法耗时:2037微秒

第二种方法耗时:885微秒(最快)

第三种方法耗时:911微秒

第四种方法耗时:902微秒


数据量:10000

第一种方法耗时:3101微秒

第二种方法耗时:5310微秒

第三种方法耗时:1386微秒

第四种方法耗时:753微秒(最快)


数据量:10,0000

第一种方法耗时:12195微秒

第二种方法耗时:6199微秒

第三种方法耗时:5034微秒

第四种方法耗时:4533微秒(最快)


数据量:40,0000

第一种方法耗时:19162微秒

第二种方法耗时:8180微秒

第三种方法耗时:10996微秒

第四种方法耗时:8023微秒(最快)


数据量:100,0000

第一种方法耗时:32261微秒

第二种方法耗时:11996微秒(最快)

第三种方法耗时:17357微秒

第四种方法耗时:15194微秒


数据量:1000,0000

第一种方法耗时:184882微秒

第二种方法耗时:75973微秒(最快)

第三种方法耗时:106312微秒

第四种方法耗时:105031微秒



经测试,第三种方法和第四种方法耗时基本差不多,

当数据达到50万以上时,第二种方法的效率更高。


0-400条,第四种最快

400-6000条记录,第二种最快

6000-500000条,第四种最快

50万以上时,第二种最快


结果仅供参考,不同软硬件环境下效果会有一定差异,

评论关闭
评论 还能输入200
评论关闭
评论 还能输入200
  • 全部评论(0)
资料加载中...
已关注 , 取消