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

来源:互联网 发布:重庆惠普程序员工资 编辑:程序博客网 时间:2024/06/05 07:55

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-178method21124201-198-187method31021145-137-136method4921151-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());}}









原创粉丝点击