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. js前端的各种面试题

    转载:http://bbs.blueidea.com/thread-3107428-1-1.html 1.截取字符串abcdefg的efg //alert('abcdefg'.substring(4) ...

  2. Hadoop2.6.0伪分布环境搭建

    用到的软件: 一.安装jdk: 1.要安装的jdk,我把它拷在了共享文件夹里面.   (用优盘拷也可以) 2.我把jdk拷在了用户文件夹下面. (其他地方也可以,不过路径要相应改变) 3.执行复制安装 ...

  3. matlab中的xcorr 自相关函数

    转载自 http://blog.163.com/to_be_myself/blog/static/176060227201101762159227/ Matlab中用于计算自相关函数的指令是xcorr ...

  4. thinkphp 配置多数据库

    1配置文件中配置另一数据库连接信息 例如: 'TestModelConfig' => array( //'配置项'=>'配置值' 'DB_TYPE' => 'mysql', // 数 ...

  5. Hibernate 的dialect 大全

    RDBMS 方言 DB2 org.hibernate.dialect.DB2Dialect DB2 AS/400 org.hibernate.dialect.DB2400Dialect DB2 OS3 ...

  6. IntelliJ idea的使用

    1.快捷键 2.插件集成 附录:参考资料

  7. SpringMVC学习--springmvc和mybatis整合

    简介 springMVC是表现层,service充当业务层,mybatis作为持久层,通过spring将这三层整合起来.如下图: 第一步:整合dao层 mybatis和spring整合,通过sprin ...

  8. SharedPreferences

    除了SQLite数据库外,SharedPreferences也是一种轻型的数据存储方式,它是Android数据持久化方法中最简单的一种. 其本质是基于XML文件存储key-value键值对数据,通常用 ...

  9. [转]Mybatis出现:无效的列类型: 1111 错误

    原文地址:http://www.cnblogs.com/sdjnzqr/p/4304874.html 在使用Mybatis时,不同的xml配置文件,有的会提示:无效的列类型: 1111 比如这个sql ...

  10. 【BZOJ 1176】【Balkan 2007】Mokia

    http://www.lydsy.com/JudgeOnline/problem.php?id=1176 整体二分的例题 把每个询问拆成四个询问,整体二分里x坐标递增,按x坐标扫的时候用树状数组维护y ...