Java HashMap 遍历方式性能探讨
来源:互联网 发布:牛顿迭代法原理 知乎 编辑:程序博客网 时间:2024/05/22 18:11
JDK8之前,可以使用keySet或者entrySet来遍历HashMap,JDK8中引入了map.foreach来进行遍历
HashMap四种遍历查询方式耗时性能对比
Map<String, String> map = new HashMap<String, String>();
int num = 5000000;
String key, value;
// 存放500万条数据
for (int i = 1; i <= num; i++) {
key = "" + i;
value = "value";
map.put(key, value);
}
1.keySet:
Map map=new HashMap();
Iterator it=map.keySet().iterator();
Object key;
Object value;
while(it.hasNext()){
key=it.next();
value=map.get(key);
System.out.println(key+":"+value);
}
时间:只获取key 50;获取key和value 170
2:entrySet:
Map map=new HashMap();
Iterator it=map.entrySet().iterator();
Object key;
Object value;
while(it.hasNext()){
Map.Entry entry = (Map.Entry)it.next();
key=entry.getKey();
value=entry.getValue();
System.out.println(key+"="+value);
}
时间:只获取key或获取value 时间差不多 110-140;获取key和value 140
3:
for (String key1 : map.keySet()) {
value = map.get(key1);
}
时间:170
4:
for (Entry<String, String> entry1 : map.entrySet()) {key = entry1.getKey();value = entry1.getValue();}
时间:130
比较:keySet其实是遍历了2次,一次是转为Iterator对象,另一次是从hashMap中取出key所对应的value。而entrySet只是遍历了一次就把key和value都放到了entry中,效率更高。如果是JDK8,使用Map.foreach方法。
2.1 使用Java8的foreach+lambda表达式遍历Map
Map<String, Integer> items = new HashMap<>();
items.put("A", 10);
items.put("B", 20);
items.put("C", 30);
items.put("D", 40);
items.put("E", 50);
items.put("F", 60);
items.forEach((k,v)->System.out.println("Item : " + k + " Count : " + v));
items.forEach((k,v)->{
System.out.println("Item : " + k + " Count : " + v);
if("E".equals(k)){
System.out.println("Hello E");
}
});
时间:158
- Java HashMap 遍历方式性能探讨
- Java HashMap 遍历方式性能探讨
- Java HashMap 遍历方式性能探讨
- Java HashMap遍历方式探讨
- Java HashMap循环遍历方式及其性能对比
- Java HashMap遍历实践,看看不同方式的性能如何
- java遍历HashMap的方式
- HashMap循环遍历方式及其性能对比
- HashMap循环遍历方式及其性能对比
- HashMap循环遍历方式及其性能对比
- HashMap循环遍历方式及其性能对比
- HashMap循环遍历方式及其性能对比
- HashMap循环遍历方式及其性能对比
- HashMap循环遍历方式及其性能对比
- HashMap循环遍历方式及其性能对比
- HashMap循环遍历方式及其性能对比
- HashMap循环遍历方式及其性能对比
- HashMap循环遍历方式及其性能对比
- 关于双网卡电脑,特定网页走特定网卡的设置
- 西安凌凯牵手2017亚欧经济论坛,响应“一带一路”建设
- recycleview的点击,长按事件
- ing boot属性文件之多环境配置【从零开始学Spring Boot】
- JQuery中$.ajax()方法参数详解
- Java HashMap 遍历方式性能探讨
- 详解Activity
- 普通二维码生成
- Java多线程--并发中集合的使用之CopyOnWriteArralist
- MFCC梅尔频率倒谱系数学习笔记
- 总结下Mysql分表分库的策略及应用
- loadrunner的analysis如何设置默认显示?
- maven自动部署到远程tomcat教程
- HTTP中GET与POST的区别