喜欢用Java写程序的朋友都知道,我们常用的一种数据结构map中存储的是键值对,我们一般存储的方式是:

map.put(key, value);

而提取相应键的值用的方法是:

map.get(key);

      确实,这些就是map的基本方法,可是,如果我想查看map中所有的元素怎么办?也就是想遍历其中的每个元素。

      下面,我就介绍三种方法遍历map:

说明:我在map中存储的值是CSDN一博主的QQ签名,当我遍历的时候你会看到。


1.map不是集合,所以,map并不存在迭代器,但是,map中的一个方法可以使得map中的键成为一个集合,那么我们就可以利用集合的迭代器进行遍历,方法如下所示:

Set<Integer> s = (Set<Integer>)map.keySet();
        Iterator<Integer> it = s.iterator();
        int Key;
        String value;
        while(it.hasNext()) {
            Key = it.next();
            value = (String)map.get(Key);
            System.out.println(Key+":\t"+value);
        }  

2.map提供了另一个方法--entryset,使得我们可以获得map中存储的“键值对”集合,我们可以对键值对集合进行操作,进行遍历,方法如下所示:

Set<Entry<Integer, String>> s = map.entrySet();
        Iterator<Map.Entry<Integer, String>> it = s.iterator();
        Map.Entry<Integer, String> entry;
        int Key;
        String value;
        while(it.hasNext()) {
            entry = it.next();
            Key = entry.getKey();
            value = entry.getValue();
            System.out.println(Key+":\t"+value);
        }  

3.其实这种方法和第二种方法是一样的,只是我们用了不同的形式实现而已,这里不多说,方法如下:

for(Map.Entry<Integer, String> entry : map.entrySet()){
			System.out.println(entry.getKey() + ":\t" + entry.getValue());
		}

下面给出完整的测试代码以及运行后的结果:

package com.brucezhang.test;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;

public class MapItTest {

	private static Map<Integer, String> my_map = new HashMap<Integer, String>();

	private static String[] my_value = {"I love three things", "The sun for the day", "The moon for the night", "The you forever"};

	/**
	 * @param args
	 * Author:DLUTBruceZhang
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		//给 map 赋初值
		for (int i = 0; i < my_value.length; i++) {
			my_map.put(i, my_value[i]);
		}

		//使用第一种方法进行遍历
		theFirstItFun(my_map);
		System.out.println("----------------------------------------");

		//使用第二种方法进行遍历
		theSecondItFun(my_map);
		System.out.println("----------------------------------------");

		//使用第三种方法进行遍历
		theThirdItFun(my_map);
	}

	public static void theFirstItFun(Map<Integer, String> map) {

		Set<Integer> s = (Set<Integer>)map.keySet();
        Iterator<Integer> it = s.iterator();
        int Key;
        String value;
        while(it.hasNext()) {
            Key = it.next();
            value = (String)map.get(Key);
            System.out.println(Key+":\t"+value);
        }
	}

	public static void theSecondItFun(Map<Integer, String> map){

		Set<Entry<Integer, String>> s = map.entrySet();
        Iterator<Map.Entry<Integer, String>> it = s.iterator();
        Map.Entry<Integer, String> entry;
        int Key;
        String value;
        while(it.hasNext()) {
            entry = it.next();
            Key = entry.getKey();
            value = entry.getValue();
            System.out.println(Key+":\t"+value);
        }
	}

	public static void theThirdItFun(Map<Integer, String> map){

		for(Map.Entry<Integer, String> entry : map.entrySet()){
			System.out.println(entry.getKey() + ":\t" + entry.getValue());
		}
	}

}


运行结果如下:

0:	I love three things
1:	The sun for the day
2:	The moon for the night
3:	The you forever
----------------------------------------
0:	I love three things
1:	The sun for the day
2:	The moon for the night
3:	The you forever
----------------------------------------
0:	I love three things
1:	The sun for the day
2:	The moon for the night
3:	The you forever

java中遍历map的几种方法介绍的更多相关文章

  1. Java中遍历map的四种方法 - 转载

    在Java中如何遍历Map对象 How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有map都 ...

  2. Java中遍历Map的几种方法

      转自: http://blog.csdn.net/wzb56/article/details/7864911 方法分为两类: 一类是基于map的Entry:map.entrySet(); 一类是基 ...

  3. 谈谈java中遍历Map的几种方法

    java中的map遍历有多种方法,从最早的Iterator,到java5支持的foreach,再到java8 Lambda,让我们一起来看下具体的用法以及各自的优缺点 先初始化一个map public ...

  4. java 中遍历Map的几种方法

    方法分为两类: 一类是基于map的Entry:map.entrySet(); 一类是基于map的key:map.keySet() 而每一类都有两种遍历方式: a.利用迭代器 iterator: b.利 ...

  5. java中遍历map对象的多种方法

    在Java中如何遍历Map对象   How to Iterate Over a Map in Java 在java中遍历Map有不少的方法.我们看一下最常用的方法及其优缺点. 既然java中的所有ma ...

  6. Java原来如此-遍历Map的三种方法

    import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; pub ...

  7. Java中遍历Map的四种方式

    Demo如下 Map<String, String> map = new HashMap<>(); map.put("key1","data1&q ...

  8. java中遍历map的两种方式

    1.先将map对象转成set,然后再转为迭代器 Iterator iterator = map.entrySet().iterator(); while(iterator.hasNext()){ En ...

  9. java中遍历MAP,嵌套map的几种方法

    java中遍历MAP的几种方法 Map<String,String> map=new HashMap<String,String>();    map.put("us ...

随机推荐

  1. C++Primer学习——类

    我们在创建类的对象时,类不应该仅仅被声明,还应该被定义过,否则无法知道类占用了多少的内存 但是如果一个类的名字已经出现过就被认为是已经声明过了,所以允许包含自己的指针或者引用. 默认构造函数: 当类中 ...

  2. hdu 5052 树链剖分

    Yaoge’s maximum profit Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/ ...

  3. UDA机器学习基础—误差原因

    1.模型误差产生的原因 (1)模型无法表示基本数据的复杂度,而造成偏差. (2)因模型对训练它所用到的数据过度敏感造成的方差. 2.由偏差造成的误差--准确率和欠拟合 有足够数据表示模型,但是由于模型 ...

  4. 四种常用IO模型

    1) 同步阻塞IO(Blocking IO)2) 同步非阻塞IO(Non-blocking IO)3) IO多路复用(IO Multiplexing)4) 异步IO(Asynchronous IO) ...

  5. 【转】Java方向如何准备技术面试答案(汇总版)

    本文转载自:“Java团长”公众号 1.面向对象和面向过程的区别 面向过程优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机.嵌入式开发.Linux/Unix等一般采 ...

  6. SVN错误:SVN Working copy XXX is too old

    出错原因: 这是因为使用了低版本的svn生成了.svn内文件内容,但是,使用高版本svn同步时便出现该问题. 解决方法: 找到报错对应的文件夹,里面有个名为.svn的文件夹,删除这个文件夹(这是svn ...

  7. 解决$.ajax()在IE10以下失效的问题

    一.问题重现 本地的脚本请求测试环境的接口 $.ajax({ url: ***, type: GET, data: data, success: function (data) { **** } }) ...

  8. vscode 常见插件及配置 备忘

    配置 // 以下解决格式化js自动添加分号 "prettier.singleQuote": true, "prettier.semi": false, // 以 ...

  9. Hibernate QBC 条件查询(Criteria Queries) and Demos

    目录 创建一个Criteria 实例 限制结果集内容 结果集排序 关联 动态关联抓取 查询示例 投影Projections聚合aggregation和分组grouping 离线detached查询和子 ...

  10. c++ 文件操作详解

    C++ 通过以下几个类支持文件的输入输出: ofstream: 写操作(输出)的文件类 (由ostream引申而来) ifstream: 读操作(输入)的文件类(由istream引申而来) fstre ...