HashMap的四种访问方式

第一种:通过Map.entrySet使用iterator遍历key和value

 

1 public void visit_1(HashMap<String,Integer> hm){
2 Iterator<Map.Entry<String,Integer>> it = hm.entrySet().iterator();
3 while(it.hasNext()){
4 Map.Entry<String ,Integer> entry = it.next();
5 String key = entry.getKey();
6 Integer value = entry.getValue();
7 }
8 }

 


第二种:通过Key来遍历value

1 public void visit_2(HashMap<String,Integer> hm){
2 for (String key:hm.keySet()){
3 Integer value = hm.get(key);
4 }
5 }

 


第三种:通过Map.Entry遍历key和value

1 public void visit_3(HashMap<String,Integer> hm){
2 for(Map.Entry<String,Integer> entry:hm.entrySet()){
3 String key = entry.getKey();
4 Integer value = entry.getValue();
5 }
6 }

 


第四种:通过Map.keySet使用iterator遍历key和value

 1 public void visit_4(HashMap<Integer,String> hm){
 2 long startTime = System.currentTimeMillis();
 3 Iterator<Integer> it = hm.keySet().iterator();
 4 while(it.hasNext()){
 5 Integer key = it.next();
 6 String value = hm.get(key);
 7 }
 8 System.out.println("visit_4 10000000 entry:"
 9 + (System.currentTimeMillis()-startTime) + " milli seconds");
10 }

 


四种方法比较:

 1 package chapter08.c86.c862;
 2 
 3 import java.util.HashMap;
 4 import java.util.Iterator;
 5 import java.util.Map;
 6 
 7 /**
 8 * Created by ceoicac on 2017/8/12 10:22.
 9 */
10 public class HashMapVisitTest {
11 public void visit_1(HashMap<Integer,String> hm){
12 long startTime = System.currentTimeMillis();
13 Iterator<Map.Entry<Integer,String>> it = hm.entrySet().iterator();
14 while(it.hasNext()){
15 Map.Entry<Integer,String> entry = it.next();
16 Integer key = entry.getKey();
17 String value = entry.getValue();
18 }
19 System.out.println("visit_1 10000000 entry:"
20 + (System.currentTimeMillis()-startTime) + " milli seconds");
21 }
22 public void visit_2(HashMap<Integer,String> hm){
23 long startTime = System.currentTimeMillis();
24 for (Integer key:hm.keySet()){
25 String value = hm.get(key);
26 }
27 System.out.println("visit_1 10000000 entry:"
28 + (System.currentTimeMillis()-startTime) + " milli seconds");
29 }
30 public void visit_3(HashMap<Integer,String> hm){
31 long startTime = System.currentTimeMillis();
32 for(Map.Entry<Integer,String> entry : hm.entrySet()){
33 Integer key = entry.getKey();
34 String value = entry.getValue();
35 }
36 System.out.println("visit_1 10000000 entry:"
37 + (System.currentTimeMillis()-startTime) + " milli seconds");
38 }
39 public void visit_4(HashMap<Integer,String> hm){
40 long startTime = System.currentTimeMillis();
41 Iterator<Integer> it = hm.keySet().iterator();
42 while(it.hasNext()){
43 Integer key = it.next();
44 String value = hm.get(key);
45 }
46 System.out.println("visit_1 10000000 entry:"
47 + (System.currentTimeMillis()-startTime) + " milli seconds");
48 }
49 public static void main(String [] args){
50 HashMap<Integer,String> hm = new HashMap<>();
51 for(int i = 1;i <= 10000000;++i){
52 hm.put(i,"num: " + i);
53 }
54 new HashMapVisitTest().visit_1(hm);
55 new HashMapVisitTest().visit_2(hm);
56 new HashMapVisitTest().visit_3(hm);
57 new HashMapVisitTest().visit_4(hm);
58 
59 }
60 }

 


结果:


作者:ceoicac
来源:CSDN
原文:https://blog.csdn.net/ceoicac/article/details/77113068
版权声明:本文为博主原创文章,转载请附上博文链接!

转载于:https://www.cnblogs.com/KeepDoingSomething/p/9904140.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/250310.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#/WPF程序开机自动启动

最近一个C/S项目客户要求开机自启的功能&#xff0c;网上找了一些方法&#xff0c;不顶用&#xff1b;最后自己去翻书&#xff0c;找到了这段代码&#xff0c;亲测可用&#xff0c;Wpf环境下需要改下获取程序目录的方式即可&#xff0c;Winform直接可用。 1 #regio…

记录一个坑

导入项目后运行控制台打印异常,pom都已检查,没有任何问题 解决办法: 项目右击---properties---deployment assembly---add---java build path entries---maven deoendencies 保存并关闭 解决... 这个问题第一次遇到 检查了很多遍maven的依赖,明明都已经配置好了 ,仍然产生了…

洛谷 P4011 孤岛营救问题【最短路+分层图】

题外话&#xff1a;昨夜脑子昏沉&#xff0c;今早一调试就过了...错误有&#xff1a;我忘记还有墙直接穿墙过...memset初始化INF用错了数...然后手残敲错一个状态一直过不了样例...要是这状态去比赛我简直完了......orz 题目链接&#xff1a;https://www.luogu.org/problemnew/…

微信小程序 --- [笔记小结] 环境搭建,基础学习

说明 源代码拷贝源代码 git clone https://github.com/Lizhhhh/miniProgram.git进入目录cd miniProgram查看tag: git tag选择需要查看的知识点,如: git checkout 02_Text 学习的视频失效了…后续还会找资源学习… 小程序 地址 一种不需要下载安装即可使用的应用,它实现了应…

tar压缩/解压用法

格式&#xff1a;tar zcvf 压缩后的路径及包名 你要压缩的文件 z:gzip压缩 c:创建压缩包 v:显示打包压缩解压过程 f:接着压缩 t:查看压缩包内容 x:解压 X:指定文件列表形式排除不需要打包压缩的文件或目录 -exclude:指定排除文件或目录不需要打包压缩的文件或目录&#xff08;也…

解决phpmyadmin 遇见的问题

1、phpmyadmin4.8.3 上传到网站目录后提示解决phpmyadmin mysqli_real_connect(): (HY000/2002): No such file or directory的错误&#xff0c; 解决方法把phpmyadmin目录中的配置文件config.sample.inc.php改成config.inc.php&#xff0c;并把 $cfg[Servers][$i][host] loc…

浅谈mysql

因为本地mysql服务的命名是mysql57&#xff0c;所以在终端启动和关闭mysql的时候&#xff0c;我们这么写&#xff0c; net stop mysql57 ;net start mysql57;如图所示 接着输入mysql -u -root -p&#xff1b; 然后输入自己的密码&#xff1b; 查看有多少个库 show database…

藤条生长为字母的动画

https://www.youtube.com/watch?vLshPEGiHsqc Blender Tutorial: Vine Animation Text 需要使用插件Add Curve: IvyGen, 进入用户设置,找到并沟选该插件. 建模:立体文字, [Alt C] 转换为网格mesh;选中网格文字,新建藤蔓:[Shift A], Curve\Add Ivy to Mesh左边工具栏下方的IvyG…

读书笔记 --- 再次阅读回流与重绘

参考 - 强烈推荐看看,这个作者写了很多特别好的文章. 浏览器渲染过程 解析HTML,生成DOM树; 解析CSS生成CSSOM树将DOM树和CSSOM树合并,生成渲染(Render)树Layout(回流): 根据生成的渲染树,视口(viewport),得到节点的几何信息(位置、大小)Painting(重绘): 根据渲染树和几何信息…

2017-2018 ACM-ICPC, Asia Daejeon Regional Contest

C 有n个节点和m边条&#xff0c;求一条最长的路径&#xff0c;该路径(c1,c2,c3...cn)满足 不出现重复的节点&#xff0c;ci 和ci1是邻居节点&#xff0c;且 ci 的邻居节点数量小于ci1的邻居节点数量。 记忆DFS遍历&#xff0c;每次递归计算的值都保存在数组里&#xff0c;这样复…

装系统工具

安装如果失败,注意是不是工具的版本太老导致 系统分区工具: DiskGeniusPortable 刻录工具: UlraISO rufus https://rufus.ie/ win32diskimager 转载于:https://www.cnblogs.com/jiangfeilong/p/9937164.html

小程序WXML基本使用

数据绑定 <!--wxml--> <view> {{message}} </view> // page.js Page({data: {message: Hello MINA!} }) 列表渲染 <!--wxml--> <view wx:for"{{array}}"> {{item}} </view> // page.js Page({data: {array: [1, 2, 3, 4, 5]} })…

tomcat 虚拟路径 与 虚拟主机配置

虚拟路径配置 方法一&#xff1a;此方法需要重启服务 打开下面文件 在host里面添加context标签 <Context docBase"D:\test" path"/testServlet/aaaaa" reloadable"true" /> 浏览器访问&#xff1a;http://172.16.6.103:1080/testServlet/a…

20172328 2018-2019《Java软件结构与数据结构》第八周学习总结

20172328 2018-2019《Java软件结构与数据结构》第八周学习总结 概述 Generalization 本周学习了二叉树的另一种有序扩展&#xff1f;是什么呢&#xff1f;你猜对了&#xff01;ヾ(◍∇◍)&#xff89;&#xff9e;就是堆。本章将讲解堆的链表实现and数组实现&#xff0c;以及往…

javascript --- Vue初始化 模板渲染

不带响应式的Vue缩减实现 模板 现有模板如下: <div id "app"><div class"c1"><div titlett1 id"id">{{ name }}</div><div titlett2 >{{age}}</div><div>hello3</div></div><ul>…

#RANK_1 极其简单的递归——骑士与金币

2000:金币 总时间限制: 1000ms内存限制: 65536kB描述国王将金币作为工资&#xff0c;发放给忠诚的骑士。第一天&#xff0c;骑士收到一枚金币&#xff1b;之后两天&#xff08;第二天和第三天&#xff09;里&#xff0c;每天收到两枚金币&#xff1b;之后三天&#xff08;第四、…

javascript --- vue2.x中原型的使用(拦截数组方法) 响应式原理(部分)

说明 在Vue2.x中,利用了对原型链的理解,巧妙的利用JavaScript中的原型链,实现了数组的pop、push、shift、unshift、reverse、sort、splice等的拦截. 你可能需要的知识 参考 - MDN 原型链 JavaScript常被描述为一种基于原型的语言(prototype-based language),每个对象拥有一…

dubbo-admin构建报错

dubbo-admin构建报错 意思是maven库里没有dubbo2.5.4-SNAPSHOT.jar这个版本的dubbo的jar包&#xff0c;把dubbo-admin项目的pom.xml的   <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>${proje…

PyCharm 通过Github和Git上管理代码

1.Pycharm中设置如图: 2.配置Git,通过网页 https://www.git-scm.com/download/win 下载 3. 转载于:https://www.cnblogs.com/0909/p/9956406.html

享元模式-Flyweight(Java实现)

享元模式-Flyweight 享元模式的主要目的是实现对象的共享,即共享池,当系统中对象多的时候可以减少内存的开销,通常与工厂模式一起使用。 本文中的例子如下: 使用享元模式: 小明想看编程技术的书, 就到家里的书架上拿, 如果有就直接看, 没有就去买一本, 回家看. 看完了就放到家里…