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. C/C++实践笔记_001Helloworld

    1.void返回值为空,int返回值Linux c,c++中,Main函数可以返回也可以不返回,普通函数必须返回.C编译松散,很容易结果出错,C++编译严格一些,结果一般会正确C语言不返回不会报错,但 ...

  2. 前端备忘录 — IE 的条件注释

    CSS hack 由于不同厂商的浏览器,比如 Internet Explorer,Safari,Mozilla Firefox, Chrome 等,或者是同一厂商的浏览器的不同版本,如 IE6 和 I ...

  3. SQL2005SP4补丁安装时错误: -2146233087 MSDTC 无法读取配置信息。。。错误代码1603的解决办法

    是在安装slq2005sp3和sp4补丁的时候碰到的问题. 起先是碰到的错误1603的问题,但网上搜索的1603的解决办法都试过了,google也用了,外文论坛也读了,依然没有能解决这个问题. 其实一 ...

  4. 你能熟练使用Dictionary字典和List列表吗?(转)

    命名空间System.Collections.Generic中有两个非常重要,而且常用的泛型集合类,它们分别是Dictionary<TKey,TValue>字典和List<T> ...

  5. 怎样修改 Openstack Horizon(Dashboard)的显示界面 (二)

    上一篇文章介绍了 Dashboard 的基本结构框架,那接下来的问题就是如何在这个框架中加入我们自己想要的内容了.在真正动手之前,让我们先来看看官方的页面是怎么做出来的.首先我们进入 /usr/sha ...

  6. Linux进程间通信之信号量

    春节过去了,真的过去一年了.在公司待了快一年了.2016希望自己变得越来越好. ps:上面那句话是年前写的,中间隔了那么久,自己也变懒了. 一.信号量 1,信号量本质是一个计数器,控制访问共享资源的最 ...

  7. 用node.js实现简单的web服务器

    node.js实现web服务器还是比较简单的,我了解node.js是从<node入门>开始的,如果你不了解node.js也可以看看! 我根据那书一步一步的练习完了,也的确大概了解了node ...

  8. JPEG文件格式介绍

    JPEG文件的存储格式有很多种,但最常用的是JFIF格式,即JPEG File Interchange Format.JPEG文件大体可以分为两个部分: (1)标记码:由两个字节构成,其中,前一个字节 ...

  9. 用SpringMvc实现Excel导出功能

    以前只知道用poi导出Excel,最近用了SpringMvc的Excel导出功能,结合jxl和poi实现,的确比只用Poi好,两种实现方式如下: 一.结合jxl实现: 1.引入jxl的所需jar包: ...

  10. selector 和 shape结合使用

    <?xml version="1.0" encoding="utf-8"?><selector xmlns:android="htt ...