博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Map集合遍历的2种方法
阅读量:7219 次
发布时间:2019-06-29

本文共 4076 字,大约阅读时间需要 13 分钟。

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

Iterator是什么东西:

java.util包下的一个接口:

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

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

方法名称得到了改进

方法摘要
 boolean ()
          如果仍有元素可以迭代,则返回 true
  ()
          返回迭代的下一个元素。
 void ()
          从迭代器指向的 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());                    }                    }}

 

你可能感兴趣的文章
2012各大IT公司校招笔试题整理
查看>>
phpcms 后台分页
查看>>
《需求工程》阅读笔记之六
查看>>
架构阅读笔记5
查看>>
IIS5.1使用虚拟目录部署网站
查看>>
Git 深度学习填坑之旅三(分支branch、远程操作)
查看>>
括号匹配问题
查看>>
UVA 10766 Organising the Organisation
查看>>
「美团 CodeM 复赛」城市网络
查看>>
python 将Excel表格中的一列数据转化成多行数据
查看>>
Go多线程与channel通信
查看>>
找水王
查看>>
多个线程之间共享数据的方式(卖票问题,存取款问题)
查看>>
观察者模式
查看>>
Bzoj2882 工艺 [线性算法]
查看>>
Bzoj2251 [2010Beijing Wc]外星联络
查看>>
python 发送邮件
查看>>
在凡客四个月的工作总结
查看>>
Qt颜色下拉框
查看>>
31、springboot与任务
查看>>