Java中四种遍历Map对象的方法
方法一:在for-each循环中使用entry来遍历,通过Map.entrySet遍历key和value,这是最常见的并且在大多数情况下也是最可取的遍历方式。在键值都需要时使用。
Map<Integer,Integer> map = new HashMap<Integer,Integer>();
for(Map.Entry<Integer,Integer> entry:map.entrySet()){
System.out.println("key="+entry.getKey()+",value = "+entry.getValue());
}
注:Map.Entry方法解释:Map.Entry是Map声明的一个内部接口,此接口为泛型,定义为Entry<K,V>。它表示Map中的一个实体(一个key-value对)
方法二:在for-each循环中遍历keys或values,如果只需要map中的键或者值,你可以通过keySet或values来实现遍历,而不是用entrySet。该方法比entrySet遍历在性能上稍好(快了10%),而且代码更加干净。
Map<Integer,Integer> map = new HashMap<Integer,Integer>();
//遍历map中的键
for(Integer key:map.keySet()){
System.out.println("key="+key);
}
//遍历map中的值
for(Integer value:map.values()){
System.out.println("value ="+value);
}
方法三:使用Iterator遍历
Map<Integer,Integer> map = new HashMap<Integer,Integer>();
Iterator<Map.Entry<Integer,Integer>> entries = map.entrySet().iterator();
while(entries.hasNext()){
Map.Entry<Integer,Integer> entry = entries.next();
System.out.println("key="+entry.getKey()+"value = "+entry.getValue());
}
不使用泛型
Map map = new HashMap();
Iterator entries = map.entrySet().iterator();
while(entries.hasNext()){
Map.Entry entry = (Map.Entry)entries.next();
Integer key = (Integer)entry.getKey();
Integer value = (Integer)entry.getValue();
System.out.println("key = "+key+",value = "+value);
}
你也可以在keySet和values上应用同样的方法。
该种方式看起来冗余却有其优点所在。首先,在老版本java中这是惟一遍历map的方式。另一个好处是,你可以在遍历时调用iterator.remove()来删除entries,另两个方法则不能。根据javadoc的说明,如果在for-each遍历中尝试使用此方法,结果是不可预测的。
从性能方面看,该方法类同于for-each遍历(即方法二)的性能。
方法四:通过键找值遍历,这个代码看上去更加干净;但实际上它相当慢且无效率。
Map<Integer, Integer> map = new HashMap<Integer, Integer>();
for (Integer key : map.keySet()) {
Integer value = map.get(key);
System.out.println("Key = " + key + ", Value = " + value);
结论:
一般来讲使用entrySet的方式进行遍历是效率最高的,因为hashMap内部的存储结构就是基于Entry的数组,在用这种方式进行遍历时,只需要遍历一次即可。而使用其他方式的时间复杂度可以会提高,例如:keySet方式,每次都需要通过key值去计算对应的hash,然后再通过hash获取对应的结果值,因此效率较低。
Java中四种遍历Map对象的方法的更多相关文章
- java中四种引用类型(对象的强、软、弱和虚引用)
		
对象的强.软.弱和虚引用在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象.也就是说,只有对象处于可触及(reachable)状态,程序才能使用它.从JDK 1.2 ...
 - Java中四种遍历List的方法
		
package com.ietree.basic.collection.loop; import java.util.ArrayList; import java.util.Iterator; imp ...
 - [集合]Map的 entrySet() 详解以及用法(四种遍历map的方式)
		
Entry 由于Map中存放的元素均为键值对,故每一个键值对必然存在一个映射关系. Map中采用Entry内部类来表示一个映射项,映射项包含Key和Value (我们总说键值对键值对, 每一个键值对也 ...
 - Java中四种引用:强、软、弱、虚引用
		
这篇文章非常棒:http://alinazh.blog.51cto.com/5459270/1276173 Java中四种引用:强.软.弱.虚引用 1.1.强引用当我们使用new 这个关键字创建对象时 ...
 - java中四种引用类型
		
java中四种引用类型 今天看代码,里面有一个类java.lang.ref.SoftReference把小弟弄神了,试想一下,接触java已经有3年了哇,连lang包下面的类都不了解,怎么混.后来在 ...
 - Java中四种访问权限总结
		
一.Java中有四种访问权限, 其中三种有访问权限修饰符,分别为private.public.protected,还有一种不带任何修饰符(default). 1. private: Java语言中对访 ...
 - java集合四种遍历方式
		
package conection; import java.util.Iterator;import java.util.LinkedList;import java.util.List; publ ...
 - Java中遍历Map对象的方法
		
方法一: 在for-each循环中使用entries来遍历 这是最常见的遍历方式,在需要获取key和value时使用. Map<Integer, Integer> map = new Ha ...
 - java中四种操作(dom、sax、jdom、dom4j)xml方式详解与比较
		
1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这个层次结构允许开发人员在树中寻找特 ...
 
随机推荐
- maven版cxf集合jetty开发服务端(一)
			
一.首先新建一个maven项目 二.pom.xml引入依赖 <dependency> <groupId>org.apache.cxf</groupId> <a ...
 - Redis-复制(MasterSlave)
			
Redis的复制(Master/Slave) 是什么: 行话:也就是我们所说的主从复制,主机数据更新后根据配置和策略, 自动同步到备机的master/slaver机制,Master以写为主,Slave ...
 - idea左侧出现日期和文件大小怎么关闭
			
shift+alt+\
 - 高级命令之awk
			
1.提取文件内容 2.提取ip
 - dockerfile的编写参数
			
注意细节 “#”号开头是注释 ,指令不区分大小写,顺序执行 FROM 指定基础镜像:注意必须是文件里第一个非注释行 ENV name 值 设置变量,注意没有=号 变量引用 ${name:-chenxi ...
 - STM32F030 启用内部晶振并配置系统时钟为48M
			
在文件 system_stm32f0xx.c 里的函数 static void SetSysClock(void) { if (HSEStatus == (uint32_t)0x01) // 存在外部 ...
 - Java面向对象的局部变量和成员变量
			
package cn.itcast.day06.demo03; /* 局部变量和成员变量 1. 定义的位置不一样[重点] 局部变量:在方法的内部,类的方法内部 成员变量:在方法的外部,直接写在类当中 ...
 - 【MySQL】数据类型之字符相关
			
" 目录 字符类型 char类型 varchar类型 实测 总结 枚举类型与集合类型 字符类型 官网:https://dev.mysql.com/doc/refman/5.7/en/char ...
 - rapidxml读xml文件
			
student.xml文件内容: int readXML(void) { rapidxml::file<> file("student.xml"); rapidxml: ...
 - WinForm开发(4)——使用Visual-Studio-2010-打包安装程序
			
打包程序: 1,解决方案—右键菜单“添加”—新建项目—其他项目类型—安装和部署—Visual Studio Installer—安装项目,输入名称Setup1,点“确定” 2,添加开始程序中的文件夹: ...