HashMap遍历方式探究
HashMap的遍历有两种常用的方法,那就是使用keyset及entryset来进行遍历,但两者的遍历速度是有差别的,下面请看实例:
package com.HashMap.Test; import java.util.HashMap;
import java.util.Iterator;
import java.util.Map.Entry; public class HashMapTest { public static void main(String[] args) {
HashMap<Integer, Integer> hm = new HashMap<>();
for(int i=0;i<10000000;i++){
hm.put(i, i);
} //方式1:
long currentTimeMillisStart = System.currentTimeMillis();
Iterator<Entry<Integer, Integer>> iterator = hm.entrySet().iterator();
while(iterator.hasNext()){
Entry<Integer, Integer> next = iterator.next();
//System.out.println("key: "+next.getKey()+" value: "+next.getValue());
}
long currentTimeMillisEnd =System.currentTimeMillis();
System.out.println("Time: " + (currentTimeMillisEnd-currentTimeMillisStart)); //方式2
long currentTimeMillisStart2 = System.currentTimeMillis();
Iterator<Integer> iterator2 = hm.keySet().iterator();
while(iterator2.hasNext()){
Integer next = iterator2.next();
//System.out.println("key: "+ next+" value: "+hm.get(next));
}
long currentTimeMillisEnd2 =System.currentTimeMillis();
System.out.println("Time: " + (currentTimeMillisEnd2-currentTimeMillisStart2));
} }
对于keySet其实是遍历了2次,一次是转为iterator,一次就从hashmap中取出key所对于的value。而entryset只是遍历了第一次,他把key和value都放到了entry中。
Time: 58
Time: 78
HashMap遍历方式探究的更多相关文章
- 史上最全HashMap遍历方式
java Hashmap Map TreeMap 的几种遍历方式,全网最全,全网最强 package Collec2; import java.util.HashMap; import java.ut ...
- hashMap遍历方式
package Ch17; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java ...
- Java HashMap 遍历方式探讨
JDK8之前,可以使用keySet或者entrySet来遍历HashMap,JDK8中引入了map.foreach来进行遍历. keySet其实是遍历了2次,一次是转为Iterator对象,另一次是从 ...
- HashMap循环遍历方式及其性能对比(zhuan)
http://www.trinea.cn/android/hashmap-loop-performance/ ********************************************* ...
- HashMap循环遍历方式及其性能对比
主要介绍HashMap的四种循环遍历方式,各种方式的性能测试对比,根据HashMap的源码实现分析性能结果,总结结论. 1. Map的四种遍历方式 下面只是简单介绍各种遍历示例(以HashMap为 ...
- Java HashMap 四种遍历方式
HashMap遍历方式包含以下4种: 1.遍历KeySet,再通过Key来getValue. 2.使用entrySet的迭代器. 3.foreach entrySet的方式. 3.foreache v ...
- Java中HashMap遍历的两种方式
Java中HashMap遍历的两种方式 转]Java中HashMap遍历的两种方式原文地址: http://www.javaweb.cc/language/java/032291.shtml 第一种: ...
- [Java] HashMap遍历的两种方式
Java中HashMap遍历的两种方式原文地址: http://www.javaweb.cc/language/java/032291.shtml第一种: Map map = new HashMap( ...
- HashMap的两种遍历方式
HashMap的两种遍历方式 HashMap存储的是键值对:key-value . java将HashMap的键值对作为一个整体对象(java.util.Map.Entry)进行处理,这优化了Hash ...
随机推荐
- ansible中tag的用法
Tags 根据官方文档介绍: ansible允许通过自定义的关键字来给playbook中的资源打上标签,然后只运行标签标记的那个task任务. 例如,可能有个完成的OS配置,然后特定的步骤标记为“nt ...
- 多国语言文档识别 ABBYY FineReader Corporate v12.0.101.388.7z 绿色破解版
ABBYY 是一家俄罗斯软件公司,在文档识别,数据捕获和语言技术的开发中居世界领先地位.其获奖产品 FineReader OCR 软件可以把静态纸文件和 PDF 文件转换成可管理的电子数据,可以大大节 ...
- UVALive 4953 Wormly--【提醒自己看题要仔细】
有一条虫要过桥,桥有断的木板和好的木板.虫有L条腿B个身体,桥长N.01串表示桥的好坏.输出最少操作次数. 一开始虫的身体在最左B桥上,腿在最左L桥上,最后要到达最右B以及最右L... 操作有2种:① ...
- pom.xml中引入局域网仓库
<repositories> <repository> <id>nexus</id> <name>my-nexus-repository&l ...
- 在iOS 应用中直接跳转到appstore的方法
找到应用程序的描述链接,比如:http://itunes.apple.com/gb/app/yi-dong-cai-bian/id391945719?mt=8 然后将 http:// 替换为 itms ...
- php curl get post
post有3种. 1.post方式 privatefunction send_post($url,$post_data){ $ch = curl_init($url); curl_setopt($ch ...
- ServletConfig与ServletContext
ServletConfig与ServletContext对象详解 一.ServletConfig对象 在Servlet的配置文件中,可以使用一个或多个<init-param>标签为s ...
- 异常处理__try{}__except(EXCEPTION_EXECUTE_HANDLER){}
在一个函数中不能混合使用 try{}catch(CException *e){} 与 __try{}__except(EXCEPTION_EXECUTE_HANDLER){} 编译时报错 error ...
- C++静态代码分析PreFast
1历史 Prefast是微软研究院提出的静态代码分析工具.主要目的是通过分析代码的数据和控制信息来检测程序中的缺陷.需要强调的是,Prefast检测的缺项不仅仅是安全缺陷,但是安全缺陷类型是其检测的最 ...
- 简易qq对话框
//本程序由QT5 creator编译可运行 //dialog.h 1 #ifndef DIALOG_H #define DIALOG_H #include <QDialog> class ...