标签:i++ while pre iterator 社区 shm integer data obj
https://yq.aliyun.com/ziliao/210955
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 (Map.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 + "微秒"); }
输出结果:
第一种方法耗时:101918微秒
第二种方法耗时:49042微秒
第三种方法耗时:82706微秒
第四种方法耗时:75093微秒
把上述的1000000改成10,输出结果如下:
第一种方法耗时:806微秒
第二种方法耗时:453微秒
第三种方法耗时:19微秒
第四种方法耗时:17微秒
改为100:
第一种方法耗时:909微秒
第二种方法耗时:631微秒
第三种方法耗时:154微秒
第四种方法耗时:141微秒
经测试,第三种方法和第四种方法耗时基本差不多,当数据上万时,第二种方法的效率更高。
以上是HashMap的四种遍历方法,及效率比较的全部内容,在云栖社区的博客、问答、云栖号、人物、课程等栏目也有HashMap的四种遍历方法,及效率比较的相关内容,欢迎继续使用右上角搜索按钮进行搜索java , 遍历 , hashmap 性能比较 ,以便于您获取更多的相关知识。
标签:i++ while pre iterator 社区 shm integer data obj
原文地址:https://www.cnblogs.com/hahajava/p/10210892.html