map遍历:

Map map = new HashMap();
Iterator it = map.entrySet().iterator();
while(it.hasNext()) {
Map.Entry entry = (Map.Entry) it.next();
Object key = entry.getKey();
Object value = entry.getValue();
}
注意:for-each循环在java 5中被引入所以该方法只能应用于java 5或更高的版本中。
如果你遍历的是一个空的map对象,for-each循环将抛出NullPointerException,因此在遍历前你总是应该检查空引用。
    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());
}
下面的方法比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);
}
该种方式看起来冗余却有其优点所在。首先,在老版本 java中这是惟一遍历map的方式。另一个好处是,你可以在遍历时调用iterator.remove()来删除entries,另两个方法则不能。根 据javadoc的说明,如果在for-each遍历中尝试使用此方法,结果是不可预测的。

JDK1.5中,应用新特性For-Each循环
Map m = new HashMap();
for(Object o : map.keySet()){
map.get(o);
}

最新文章

  1. 再次推荐一款逼真的HTML5下雪效果
  2. socket编程知识
  3. ubuntu安装 laravel 过程中出现: mcrypt php extension required 的问题 | 以及composer相关问题 | Nginx安装
  4. MinGW GCC下sleep()函数问题
  5. C# Form窗体子窗口关闭时刷新父窗体中的datagridview
  6. ios objection
  7. AlarmManager与PendingIntent
  8. java单例模式(线程安全,效率高,双重推断)
  9. 达到工业使用质量级别的类似于QQ截屏的软件
  10. Linaro系统获取root权限方法
  11. pycharm安装,svn使用,远程开发调试,接口测试,连接服务器
  12. [SDOI2009]HH的项链
  13. SignalR第一节-在5分钟内完成通信连接和消息发送
  14. Linux:Gentoo系统的安装笔记(四)
  15. Fiddler模拟低速网络
  16. CDQ分治总结(CDQ,树状数组,归并排序)
  17. R语言-查看加载包、卸除加载包及安装包与卸载包
  18. Python 爬虫入门(三)—— 寻找合适的爬取策略
  19. android EditText设置光标、边框和图标,以及限制输入
  20. 前台界面(1)---HTML基本定义及常见标签

热门文章

  1. POJ百练—IP地址转换
  2. MATLAB模糊逻辑工具箱函数
  3. 奇异值分解(SVD)实例,将不重要的特征值改为0,原X基本保持不变
  4. 【java并发编程艺术学习】(五)第二章 java并发机制的底层实现原理 学习记录(三) 原子操作的实现原理学习
  5. [HDU1711]KMP模板
  6. 8、泛型程序设计与c++标准模板库5.函数对象
  7. doxygen+ graphviz 开源工具生成源码调用树的wiki
  8. Python开发【第三篇】:分支循环
  9. C#进行Post请求(解决url过长的问题)
  10. Ubuntu使用技巧