【Java基础】HashMap的四种遍历以及耗时对比

HashMap的四种遍历以及耗时对比

1.method1

	public static void method1(Map<String, Object> map) {
		getTime();
		Set<String> keySet = map.keySet();//键集合
		Iterator<String> it = keySet.iterator();//迭代器
		while(it.hasNext()) {
			String key = it.next();
			Object value = map.get(key);
//			System.out.println(key+"_"+value);
		}
		getTime();
	}

2.method2

	public static void method2(Map<String,Object> map) {
		getTime();
		for(String key : map.keySet()) {
			Object value = map.get(key);
//			System.out.println(key+"_"+value);
		}
		getTime();
	}

3.method3


	public static void method3(Map<String,Object> map) {
		getTime();
		Set<Entry<String, Object>> entrySet = map.entrySet();
		Iterator<Entry<String, Object>> it = entrySet.iterator();
		while(it.hasNext()) {
			Entry<String, Object> next = it.next();
			String key = next.getKey();
			Object value = next.getValue();
//			System.out.println(key+"_"+value);
		}
		getTime();
	}

4.method4

	public static void method4(Map<String,Object> map) {
		getTime();
		for(Map.Entry<String, Object> entry : map.entrySet()) {
			String key = entry.getKey();
			Object value = entry.getValue();
//			System.out.println(key+"_"+value);
		}
		getTime();
	}

5.耗时对比

进行简单的数据量遍历测试,遍历时间应该与电脑性能不同有差异(尝试1000W时,电脑性能已经不够了,各位可以自行测试)。时间差单位ms。
遍历耗时方法对比
数据量5W50W500W(3次)
method1825203-180-178
method21124201-198-187
method31021145-137-136
method4921151-135-136


6.整体代码

package hashMap;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
/**
 * 
 * @author wsz
 * @date 2017年12月12日
  			耗时单位ms
 ----------------------------------
      数据量     5W      50W     500W
 ----------------------------------  
 method1   8       25   203-180-178
 ----------------------------------
 method2   11      24   201-198-187
 ----------------------------------
 method3   10      21   145-137-136
 ----------------------------------
 method4   9       21   151-135-136
 ----------------------------------
 
 */
public class Demo1 {

	public static void main(String[] args) {
		Map<String,Object> map = new HashMap<String, Object>();
		long size = 10000000L;
		for(int i = 0; i < size ;i++) {
			map.put(String.valueOf(i), i);
		}
		
		method1(map);
		method2(map);
		method3(map);
		method4(map);
	}
	
	public static void method1(Map<String, Object> map) {
		getTime();
		Set<String> keySet = map.keySet();//键集合
		Iterator<String> it = keySet.iterator();//迭代器
		while(it.hasNext()) {
			String key = it.next();
			Object value = map.get(key);
//			System.out.println(key+"_"+value);
		}
		getTime();
	}
	
	public static void method2(Map<String,Object> map) {
		getTime();
		for(String key : map.keySet()) {
			Object value = map.get(key);
//			System.out.println(key+"_"+value);
		}
		getTime();
	}
	
	public static void method3(Map<String,Object> map) {
		getTime();
		Set<Entry<String, Object>> entrySet = map.entrySet();
		Iterator<Entry<String, Object>> it = entrySet.iterator();
		while(it.hasNext()) {
			Entry<String, Object> next = it.next();
			String key = next.getKey();
			Object value = next.getValue();
//			System.out.println(key+"_"+value);
		}
		getTime();
	}
	
	public static void method4(Map<String,Object> map) {
		getTime();
		for(Map.Entry<String, Object> entry : map.entrySet()) {
			String key = entry.getKey();
			Object value = entry.getValue();
//			System.out.println(key+"_"+value);
		}
		getTime();
	}
	
	public static void getTime() {
		System.out.println(System.currentTimeMillis());
	}
}









评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值