博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hashmap java 便利_Java中HashMap的四种遍历方法,及效率比较
阅读量:5253 次
发布时间:2019-06-14

本文共 2014 字,大约阅读时间需要 6 分钟。

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

2016-12-06·Mr.Xia

4582 次浏览

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 map = new HashMap();

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.get(key[i]);

}

long t2 = System.nanoTime();

//循环第二种

for(Entry entry:map.entrySet()){

entry.getValue();

}

long t3 = System.nanoTime();

//循环第三种

Iterator 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万以上时,第二种最快

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

转载地址:http://rheav.baihongyu.com/

你可能感兴趣的文章
Tokyo Cabinet和Tokyo Tyrant及PHP扩展包的安装
查看>>
拒绝访问 temp 目录。用来运行 XmlSerializer 的标识“IIS APPPOOL\UGAS”没有访问 temp 目录的足够权限...
查看>>
5.3下午
查看>>
设计模式--单一职责原则
查看>>
Java提高篇——equals()与hashCode()方法详解
查看>>
面向对象编程(十二)——final关键字
查看>>
CentOS搭建FTP服务
查看>>
开博第一天
查看>>
C/C++中的绝对值函数
查看>>
spring集成jedis简单实例
查看>>
Redis
查看>>
第一阶段冲刺第八天
查看>>
css变换与动画详解
查看>>
个人项目-小学四则运算 “软件”之初版
查看>>
Ubuntu 17.04下创建IntelliJ IDEA图标快捷方式
查看>>
StringTokenizer实现字符串分割
查看>>
在Android系统中调用系统前置摄像头
查看>>
hdu 3549 Flow Problem Edmonds_Karp算法求解最大流
查看>>
hdu 5769 Substring 后缀数组 + KMP
查看>>
springmvc代码执行流程
查看>>