map是Java中非常常用的一种数据结构,但map不同于set和list都继承自Collection接口。

所以map没有实现Collection的Iterator 方法,自身没有迭代器来遍历元素。

构造一个map

  1. Map<String, String> map = new HashMap<String, String>();
  2. map.put("001", "hello");
  3. map.put("002", "world");
  4. map.put("003", "main");

想遍历这个map,那map通常的遍历方式有哪几种呢?

这里我们介绍常用的四种方式:keySet集合迭代,entrySet集合迭代,keySet 集合for-each 循环,entrySet集合for-each循环。

方法1 keySet集合迭代

  1. // method1
  2. Set<String> keySet = map.keySet();
  3. Iterator<String> it = keySet.iterator();
  4. while (it.hasNext()) {
  5. String key = it.next();
  6. System.out.println(key + "=" + map.get(key));
  7. }

方法2 entrySet集合迭代

  1. // method2
  2. Set<Map.Entry<String, String>> entrySet = map.entrySet();
  3. Iterator<Map.Entry<String, String>> meIt = entrySet.iterator();
  4. while (meIt.hasNext()) {
  5. Entry<String, String> entry = meIt.next();
  6. System.out.println(entry.getKey() + "=" + entry.getValue());
  7. }

方法3 keySet集合for-each循环

  1. // method3
  2. for (String key : map.keySet()) {
  3. System.out.println(key + "=" + map.get(key));
  4. }

方法4 entrySet集合for-each循环

  1. // method4
  2. for (Map.Entry<String, String> entry : map.entrySet()) {
  3. System.out.println(entry.getKey() + "=" + entry.getValue());
  4. }

四种方式中,method1 和 method2 是通过迭代器来显示完成的,method3 和 method4 是通过for-each来隐式的通过迭代器来完成的。

同时 method1 和 method3 是通过key的集合来完成的,method2 和 method4 是通过entry 的集合来完成的。

方法1 和方法2 的区别

一个是获取keySet ,一个是获取entrySet

推荐使用entrySet 的方式去获取,查看map通过key获取value的方法

  1. public V get(Object key) {
  2. if (key == null)
  3. return getForNullKey();
  4. Entry<K,V> entry = getEntry(key);
  5. return null == entry ? null : entry.getValue();
  6. }

也是先获取该key对应的entry,然后再获取value值,所以,推荐使用entrySet 方法,再遍历entry集合的方式来遍历map

map 接口还有一个方法 values() ,由于仅能取到所有的value值,而取不到key值,所以在这里就算不上遍历map了,只能算上遍历map的value值。

map的四种遍历方式的更多相关文章

  1. Map 的四种遍历方式

    Map 的四种遍历方式 import java.util.HashMap; import java.util.Iterator; import java.util.Map; public class ...

  2. java Map的四种遍历方式

    1.这是最常见的并且在大多数情况下也是最可取的遍历方式,在键值都需要时使用. Map<Integer, Integer> map = new HashMap<Integer, Int ...

  3. list的四种遍历方式

    1.手先增强for循环和iterator遍历的效果是一样的,也就说 增强for循环的内部也就是调用iteratoer实现的,但是增强for循环 有些缺点,例如不能在增强循环里动态的删除集合内容.不能获 ...

  4. Java中Map的4种遍历方式

    第一种方式:这是平常用的最多也最可取的一种遍历方式. for (Map.Entry<String, Object> entry : map.entrySet()) { System.out ...

  5. lua中for循环的四种遍历方式

    lua中for的四种遍历方式区别 table.maxn 取最大的整数key #table 从1开始的顺序整数最大值,如1,2,3,6 #table == 3   key,value pairs 取每一 ...

  6. Map的四种遍历

    //Map的四种遍历方法 public static void main(String[] args) { Map<String, String> map = new HashMap< ...

  7. java集合四种遍历方式

    package conection; import java.util.Iterator;import java.util.LinkedList;import java.util.List; publ ...

  8. java map的四种遍历

    四种遍历: public static void main(String[] args) { Map<String, String> map = new HashMap<String ...

  9. Map的两种遍历方式

    ********************************************************************************* ****************** ...

随机推荐

  1. [bzoj1935][shoi2007]Tree 园丁的烦恼(树状数组+离线)

    1935: [Shoi2007]Tree 园丁的烦恼 Time Limit: 15 Sec  Memory Limit: 357 MBSubmit: 980  Solved: 450[Submit][ ...

  2. 【Java】变量类接口_学习笔记

    变量.类和接口 1.变量的类型 实例变量(不以static修饰) 成员变量 类变量(以static修饰) 所有变量 形参(方法签名中定义的变量) 局部变量         方法局部变量(在方法内定义) ...

  3. BZOJ4247挂饰

    Description     JOI君有N个装在手机上的挂饰,编号为1...N. JOI君可以将其中的一些装在手机上.     JOI君的挂饰有一些与众不同--其中的一些挂饰附有可以挂其他挂件的挂钩 ...

  4. LD_LIBRARY_PATH的设定

    LD_LIBRARY_PATH的设定   变量LD_LIBRARY_PATH 是用来在Linux下设置动态链接库(*.so)的查找路径,我们一般情况下都需要在运行一个带有动态链接库的程序是运行 exp ...

  5. Markdown渲染后文章标题收缩控件

    文章首发于szhshp的第三边境研究所(szhshp.org), 转载请注明 一个让Markdown-Post的标题拥有Collapse功能的JS 直接把鼠标放在这篇文章下方的header上,点击标题 ...

  6. 使用scp命令下载服务器文件

    scp -P 7022 admin@ip:/newnow/mysql/backup.sql 7birds.sql -P 指定端口号,默认为22

  7. 【转】ArcGIS地图缓存制作简介

    [PDF]ArcGIS 地图缓存制作简介 - Esri中国 ArcGIS地图缓存制作简介 制作好的电子地图只有发布为服务后才能为更多的用户所查看与使用.ArcGIS Server 为共享 GIS 资源 ...

  8. Java 中的 request 和response 区别

    1.response 属于重定向请求: 其地址栏的URL会改变: 会向服务器发送两次请求: 2. request 属于请求转发: 其地址栏的URL不会改变: 向服务器发送一次请求: 举一个区分它们的简 ...

  9. 我需要在Web上完成一个图片上传的功能后续(+1)

    微信入口施工完成.关键字识别中增加了本次活动的"关键字",在系统中增加了链接.不过,由于地址包含私密关键参数,这里隐藏,敬请原谅. 下一步,微信链接的地址页面是要对微信用户的信息进 ...

  10. 强大的命令行工具wmic

    1.wmic=Microsoft Windows Management Instrumentation 2. C:\WINDOWS\system32\wbem 下的东西,特别是.xsl格式化文件,实现 ...