- 浏览: 20154 次
- 性别:
- 来自: 大连
文章分类
最新评论
转自:http://blog.csdn.net/tjcyjd/article/details/11111401
在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法。我们看一下最常用的方法及其优缺点。 既然java中的所有map都实现了Map接口,以下方法适用于任何map实现(HashMap, TreeMap, LinkedHashMap, Hashtable, 等等) 方法一 在for-each循环中使用entries来遍历 这是最常见的并且在大多数情况下也是最可取的遍历方式。在键值都需要时使用。 [java] view plaincopy 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()); } 注意:for-each循环在java 5中被引入所以该方法只能应用于java 5或更高的版本中。如果你遍历的是一个空的map对象,for-each循环将抛出NullPointerException,因此在遍历前你总是应该检查空引用。 方法二 在for-each循环中遍历keys或values。 如果只需要map中的键或者值,你可以通过keySet或values来实现遍历,而不是用entrySet。 [java] view plaincopy 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); } 该方法比entrySet遍历在性能上稍好(快了10%),而且代码更加干净。 方法三使用Iterator遍历 使用泛型: [java] view plaincopy 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()); } 不使用泛型: [java] view plaincopy 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遍历(即方法二)的性能。 方法四、通过键找值遍历(效率低) [java] view plaincopy 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); } 作为方法一的替代,这个代码看上去更加干净;但实际上它相当慢且无效率。因为从键取值是耗时的操作(与方法一相比,在不同的Map实现中该方法慢了20%~200%)。如果你安装了FindBugs,它会做出检查并警告你关于哪些是低效率的遍历。所以尽量避免使用。 总结 如果仅需要键(keys)或值(values)使用方法二。如果你使用的语言版本低于java 5,或是打算在遍历时删除entries,必须使用方法三。否则使用方法一(键值都要)。
发表评论
-
java中List对象排序的通用方法
2015-03-26 11:10 316http://blog.csdn.net/5iasp/arti ... -
得到List中重复的数据
2014-07-01 17:00 321// set中存放的是不可重复的元素 HashSet& ... -
jdbc
2014-06-26 07:38 325webservice :http://www.blogjava ... -
Array、List互相转换
2013-10-18 10:19 544数组转换为list: package com.basic.ob ... -
What version of Java do I have installed?
2013-10-16 16:42 491查看java版本:java -version -
java排序
2013-10-16 15:17 356排序方法: package com.sst; publi ... -
数字转换为汉语中人民币的大写(转载)
2013-09-27 14:06 818java转换一: package dataDe ... -
单例模式
2013-09-26 11:19 287摘自:博客园,小黎*chichy Go for it ,向攻城 ... -
java随机数
2013-09-26 10:58 385有关随机数,在网上找了一些资料,感觉总结的不错,就记载下来,以 ... -
java日期工具类
2013-09-26 09:52 360今天遇到了日期转换知识,在网上搜集了一个测试例子,并且在自己电 ... -
java日期
2013-09-26 09:51 0package dataDemo; impor ... -
java判断字符串是否为汉字
2013-08-15 17:59 895//正则表达式实现 String ... -
java 读取文件
2013-07-12 12:47 3121、按字节读取文件内容 2、按字符读取文件内容 3、按行读取文 ...
相关推荐
Java中如何遍历Map对象的4种方法_.docx
本文给大家介绍java遍历map对象的四种方式,对java中遍历map感兴趣的朋友可以一起了解了解
<FONT color=#0000ff>//方法一: 用entrySet() Iterator it = emails.entrySet().iterator(); while(it.hasNext()){ Map.Entry m=(Map.Entry)it.next(); logger.info("email-" + m.getKey() + ":" + m....
1、遍历Map.entrySet():它的每一个元素都是Map.Entry对象,这个对象中, 放着的就是Map中的某一对key-value; 2、遍历Map.keySet():它是Map中key值的集合,我们可以通过遍历这个集合来 读取Map中的元素; 3、...
Java中 List《map》把里面map中某个key相同记录的其他key 的 value 合并 Java中 List《map》把里面map中某个key相同记录的其他key 的 value 合并
java Map 遍历方法 Map map = new HashMap(); Iterator it = map.entrySet().iterator(); while (it.hasNext()) { Map.Entry entry = (Map.Entry) it.next(); Object key = entry.getKey(); ...
有Map的四种遍历方式。Java怎样调用存储过程。九大内置对象。
多层嵌套循环 参数转换 数据库配置报文父子级结构 java实现
4)打印集合的大小,然后删除集合中的第3个元素,并显示删除元素的内容,然后再打印目前集合中第3个元素的内容,并再次打印集合的大小。 3、编写程序练习Map集合的基本使用: 1)创建一个只能容纳String对象的...
8.1 Java对象在JVM中的生命周期 8.2 理解Session的缓存 8.2.1 Session的缓存的作用 8.2.2 脏检查及清理缓存的机制 8.3 Java对象在Hibernate持久化层的状态 8.3.1 临时对象的特征 8.3.2 持久化对象的...
集合类存放于 Java.util 包中,主要有 3 种:set(集)、list(列表包含 Queue)和 map(映射)。 Collection:Collection 是集合 List、Set、Queue 的最基本的接口。 Iterator:迭代器,可以通过迭代器遍历集合中的...
Java不同数据存储类型使用不同遍历方法效率研究 GitHub代码仓库 数据存储类型 ArrayList HashSet HashMap LinkedList 遍历方法 传统遍历方法 for(int i=0;i<list.size();i++) { String str = list.get(i); ... ...
2、编写一个类,在main方法中定义一个Map对象(采用泛型),加入若干个对象,然后遍历并打印出各元素的key和value。 3、请说明Java中字符'\'的含义,有什么作用? 4、写一个方法,此方法可将obj对象中名为property...
页面向后台action传递一个json字符串,需要将json字符串转换成Map对象 public Map<String> toMap(Object object) { Map<String> data = new HashMap(); // 将json字符串转换成jsonObject JSONObject jsonObject...
//遍历map Set keys=map.keySet(); Iterator<Integer> stringIter=keys.iterator(); while(stringIter.hasNext()){ int key=stringIter.next(); String value=(String) map.get(key);//根据键key得到value的值...
第3版 机械工业出版社 教学内容和要求 知识点 重要程度 使用频度 难度 Java 入门 高 中 易 变量和运算符 高 高 中 控制结构 高 高 易 数组 高 高 中 方法 很高 高 中 封装 很高 很高 难...
Java的容器类有两种基本类型:Collection和Map,区别在于容器中每个位置保存的元素个数。Collection每个位置只能保存一个元素,Map保存的是键值对。 2、迭代器,是一个对象,它的工作是遍历并选择序列中的对象,...
对于客户机,EntityBean是一种持久性对象,它代表一个存储在持久性存储器中的实体的对象视图,或是一个由现有企业应用程序实现的实体。 Session Bean 还可以再细分为 Stateful Session Bean 与 Stateless Session ...
8.1 Java对象在JVM中的生命周期 8.2 理解Session的缓存 8.2.1 Session的缓存的作用 8.2.2 脏检查及清理缓存的机制 8.3 Java对象在Hibernate持久化层的状态 8.3.1 临时对象的特征 8.3.2 持久化对象的...