第一种方式:这是平常用的最多也最可取的一种遍历方式。

for (Map.Entry<String, Object> entry : map.entrySet()) {

System.out.println("key=" + entry.getKey() + ",value=" + entry.getValue());

第二种方式:如果只需要map中的键或者值,你可以通过keySet或values来实现遍历,而不是用entrySet,该方法比entrySet遍历在性能上稍好(快了10%),而且代码更加干净。

// 遍历key

for (String key : map.keySet()) {

System.out.println("key=" + key);

}

// 遍历value

for (Object value : map.values()) {

System.out.println("value=" + value);

}

第三种方式:使用Iterator进行遍历Map。

Iterator<Map.Entry<String, Object>> entries = map.entrySet().iterator();

while (entries.hasNext()) {

Entry<String, Object> entry = entries.next();

System.out.println("key=" + entry.getKey() + ",value=" + entry.getValue());

}

注意:在遍历过程中remove操作,只能用iterator遍历方式,其他遍历会抛异常,(顺便补充,list通过Iterator方式可正确遍历完成remove操作,直接调用list的remove方法就会抛异常)。

Iterator<Map.Entry<String, Object>> it = map.entrySet().iterator();

while (it.hasNext()) {

Map.Entry<String, Object> entry = it.next();

String key = entry.getKey();

if (key.equals("1")) {

System.out.println("remove的key= " + key);

it.remove();

System.out.println("key=" + key + "已移除");

}

}

for (String key : map.keySet()) {

System.out.println("key=" + key + ",value=" + map.get(key));

}

list的遍历中remove。

//会抛ConcurrentModificationException异常

for(String str : list){

list.remove(str);

}

//正确遍历移除方式

Iterator<String> it = list.iterator();

while(it.hasNext()){

it.next();

it.remove();

}

第四种遍历方式:通过键找值遍历,缺点,效率低,本身从键取值是耗时的操作。

for (String key : map.keySet()) {

Object value = map.get(key);

System.out.println("key=" + key + ",value=" + value);

}

最新文章

  1. 为什么现在我最终推荐内存OLTP
  2. 工厂模式,根据ID创建对应的实例类
  3. java并发编程(八)多线程环境下安全使用集合
  4. Default团队项目立题
  5. jquery 解析数据库中的json日期为正常的格式
  6. js获取节点的DOM操作
  7. 测算Redis处理实际生产请求的QPS/TPS
  8. Linux----快速注释包含特定字符串的行
  9. Javascript之简单按钮搜索功能
  10. 函数textread
  11. android学习12——重载SurfaceView一些方法的执行顺序
  12. 第一章:shiro简介
  13. pt-query-digest
  14. window注册鼠标右键菜单,及子菜单
  15. VeeamOne(Free Edition 9.5 )-安装与配置
  16. 印刷行业合版BOM全阶维护示例
  17. groovy学习知识
  18. sublime text3全局设置
  19. Github 指令上手 --- 分支
  20. 关于CentOS 6下Hadoop占用系统态CPU高的处理办法【转】

热门文章

  1. Java实现 蓝桥杯 基础练习 闰年判断
  2. Java实现 LeetCode 27 移除元素
  3. java实现串逐位和(C++)
  4. css背景图片加载失败,页面部分图标无法显示
  5. 【JVM故事】了解JVM的结构,好在面试时吹牛
  6. 解析HOT原理
  7. 【asp.net core 系列】8 实战之 利用 EF Core 完成数据操作层的实现
  8. CSS中的float和margin的混合使用
  9. Firefox中input元素,不能重新获取焦点函数focus()
  10. Mbatis使用