Map是一个集合的接口,是key-value相映射的集合接口,集合遍历的话,需要通过Iterator迭代器来进行。

Iterator是什么东西:

java.util包下的一个接口:

对 collection 进行迭代的迭代器。迭代器取代了 Java Collections Framework 中的 Enumeration。迭代器与枚举有两点不同:

迭代器允许调用者利用定义良好的语义在迭代期间从迭代器所指向的 collection 移除元素。

方法名称得到了改进

方法摘要
 boolean hasNext()
          如果仍有元素可以迭代,则返回 true
 E next()

          返回迭代的下一个元素。
 void remove()

          从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。

1、来一个简单的例子吧:

摘抄自别的网站:写的非常清楚

http://www.cnblogs.com/azhqiang/p/4110333.html

Map读取键值对,Java遍历Map的两种实现方法

第一种方法是根据map的keyset()方法来获取key的set集合,然后遍历map取得value的值

import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
public class HashMapTest2
{
public static void main(String[] args)
{
HashMap map = new HashMap(); map.put("a","aaaa");
map.put("b","bbbb");
map.put("c","cccc");
map.put("d","dddd"); Set set = map.keySet(); for(Iterator iter = set.iterator(); iter.hasNext();)
{
String key = (String)iter.next();
String value = (String)map.get(key);
System.out.println(key+"===="+value);
}
}
}

第二种方式是使用Map.Entry来获取:

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
public class HashMapTest4
{
public static void main(String[] args)
{
HashMap map = new HashMap(); map.put("a","aa");
map.put("b","bb");
map.put("c","cc");
map.put("d","dd"); Set set = map.entrySet(); for(Iterator iter = set.iterator(); iter.hasNext();)
{
Map.Entry entry = (Map.Entry)iter.next(); String key = (String)entry.getKey();
String value = (String)entry.getValue();
System.out.println(key +" :" + value);
}
}
}

获取map的大小:

public static void main(String[] args) {

    Map map = new HashMap();

    map.put("apple", "新鲜的苹果");     //向列表中添加数据

    map.put("computer", "配置优良的计算机");   //向列表中添加数据

    map.put("book", "堆积成山的图书");     //向列表中添加数据

    System.out.println("Map集合大小为:"+map.size());

}

我自己试了,并对其中的每一步进行了详解

基础类:

public class Student {
//private int num;//身份证号
private String name;
private String sex;
public Student() {
super();
// TODO Auto-generated constructor stub
}
public Student(String name, String sex) {
super();
this.name = name;
this.sex = sex;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}

测试集合类:

public class Test3 {
public static void main(String[] args) {
//创建学员
Student stu1=new Student("李明", "男");
Student stu2=new Student("张丽", "女");
//创建保存键-值的集合对象
Map students=new HashMap();
//把英文名字与学员对象按键-值的方式 存储在HashMap中
students.put("Jack", stu1);
students.put("danae", stu2); /*************第一种方法*********************
//返回此映射中包含的键的 Set 视图
Set set= students.keySet();//keyset返回一个set的集合
//建一个set的迭代器
Iterator it=set.iterator();//创建键值的迭代器
//hasNext()如果仍有元素可以迭代,则返回 true。
while(it.hasNext()){//存在下一个值的时候
//返回迭代的下一个元素
String key=(String) it.next();
Student value=(Student)(students.get(key));
System.out.println(key+"-------"+value.getName()+value.getSex()); }
******************************************************/
Set set=students.entrySet();//返回此映射中包含的映射关系的 Set 视图。
Iterator it=set.iterator();//建set集合的迭代器
//遍历集合迭代器
while(it.hasNext()){
/***********
* 映射项(键-值对)。Map.entrySet 方法返回映射的 collection 视图,
* 其中的元素属于此类。获得映射项引用的唯一 方法是通过此 collection 视图的迭代器来实现。
* 这些 Map.Entry 对象仅 在迭代期间有效;更确切地讲,
* 如果在迭代器返回项之后修改了底层映射,则某些映射项的行为是不确定的,除了通过 setValue 在映射项上执行操作之外。
*/
Map.Entry entry=(Map.Entry) it.next();//有下一个集合数据
String key=(String) entry.getKey();
//entry.getkey或getvalue返回的是Object类型的数据,所以要强转,因为我的value值是多个数据,这些数据都是要通过我的student类才能获取到它的属性值
Student value=(Student) entry.getValue();
System.out.println(key+"-----------"+value.getName()+value.getSex()); } }
}

Map集合遍历的2种方法的更多相关文章

  1. Map集合遍历的4种方法

    完全复制https://www.cnblogs.com/blest-future/p/4628871.html import java.util.HashMap; import java.util.I ...

  2. Map 集合遍历的4种方法

    Map 集合初始化时,指定集合初始值大小. 说明:HashMap 使用 HashMap(int initialCapacity) 初始化. 正例:initialCapacity = (需要存储的元素个 ...

  3. map集合遍历的五种方法

    package com.jackey.topic; import java.util.ArrayList;import java.util.HashMap;import java.util.Itera ...

  4. Map集合遍历的四种方式理解和简单使用-----不能for循环遍历

    Map集合遍历的四种方式理解和简单使用   ~Map集合是键值对形式存储值的,所以遍历Map集合无非就是获取键和值,根据实际需求,进行获取键和值 1:无非就是通过map.keySet()获取到值,然后 ...

  5. Map集合遍历的四种方式理解和简单使用

    ~Map集合是键值对形式存储值的,所以遍历Map集合无非就是获取键和值,根据实际需求,进行获取键和值 1:无非就是通过map.keySet()获取到值,然后根据键获取到值 for(String s:m ...

  6. Map集合迭代的两种方法

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

  7. List集合遍历的三种方法

    测试数据: List<String> list = new ArrayList<String>(); list.add("java"); list.add( ...

  8. Java Map集合 遍历 五种方式(包含 Lambda 表达式遍历)

    示例代码如下: package com.miracle.luna.lambda; import java.util.HashMap; import java.util.Iterator; import ...

  9. Map接口中的常用方法和Map集合遍历键找值方式

    Map接口中定义了很多方法,常用的如下: public V put(K key,V value) 将指定的值与此映射中的指定键相关联(可选操作) V remove(Object key); 如果此映射 ...

随机推荐

  1. 是什么时候开始学习gulp了

    转自:http://www.ydcss.com/archives/18 简介: gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优化,而且在开发过程中很多重 ...

  2. Node基础:url查询参数解析之querystring

    模块概述 在nodejs中,提供了querystring这个模块,用来做url查询参数的解析,使用非常简单. 模块总共有四个方法,绝大部分时,我们只会用到 .parse(). .stringify() ...

  3. 反射 实现不同模型相同属性赋值 第二集(automapper)

    前言: 两年前写过一个 反射实现不同模型相同属性赋值 只能简单的实现两个model 相同属性名,相同类型赋值 最近又遇到这个问题,需要对相同属性名或者指定属性名 不同类型(复杂对象,如:List< ...

  4. ionic —— 开发环境搭建并编译运行第一个APP

    其实类似的环境已经玩了很多次了,最开始玩还是微信刚刚出来,那会儿没有智能机.只好安装一个模拟器,却只是为了注册一个微信.想想也就是够了~ 前前后后折腾了很多次,可是每一次都给人不一样的感觉,也许是这个 ...

  5. Dapper Vs Dbentry

    公司项目数据库访问采用的dapper,以前没有用过.今天简单的测试下了,dapper和dbentry 查询效率情况. public ActionResult Test() { Sys_UserFaca ...

  6. [BZOJ 2819]NIM(dfs序维护树上xor值)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2819 分析: 树上的nim游戏,关键就是要判断树上的一条链的异或值是否为0 这个题目有 ...

  7. 前端程序员应该知道的15个 jQuery 小技巧

    下面这些简单的小技巧能够帮助你玩转jQuery. 返回顶部按钮 预加载图像 检查图像是否加载 自动修复破坏的图像 悬停切换类 禁用输入字段 停止加载链接 切换淡入/幻灯片 简单的手风琴 让两个div高 ...

  8. [转]C#操作注册表

    原文链接:http://www.cnblogs.com/txw1958/archive/2012/08/01/csharp-regidit.html 下面我们就来用.NET下托管语言C#注册表操作,主 ...

  9. cxf和jaxws的对比

    和jaxws相比,服务器发布方式和客户端访问方式不同 以下是cxf的代码: 服务器发布方式: package service; import javax.xml.ws.Endpoint; import ...

  10. [Bundling and Minification ] 一、如何绑定

    绑定和压缩(缩小)是ASP.NET 4.5出现的用来提高程序性能的两个重要的技术.绑定(Bundling)是将多个文件合并为一个文件,压缩(Minification)主要是将文件缩小,如Js .CSS ...