<nav id="gb9pn"></nav>

  1. <form id="gb9pn"><legend id="gb9pn"></legend></form>

    <form id="gb9pn"><legend id="gb9pn"><video id="gb9pn"></video></legend></form>
  2. 当前位置:首页 > 嵌入式培训 > 嵌入式学习 > 讲师博文 > Java:Map遍历

    Java:Map遍历 时间:2019-02-13      来源:华清远见

    1、Map

    Map是Java中一种十分常用的集合类型(接口),主要实现类有HashMap、TreeMap等。Map通常用于存储“键-值(key-value)”类型的数据结构,比如我们手机中的通讯录“张三-13066668888”;或者股票代码与股票名称“000858-五粮液”。 所以我们可以形象的理解为Map中保存了两组数据,一组是key,另一组是value。key非常类似于Set,它是不能重复的,也不确保按顺序排列。value非常类似List,它可以有重复的值,可以通过key来获取对应的value。

    2、Map基本使用

    Map提供put和get方法来存取数据,下面例子以HashMap为例演示Map基本的存取数据的方式:

    package com.hqyj;

    import java.util.HashMap;

    import java.util.Map;

    public class LoopMap {

            public static void main(String[] args) {

                    //初始化map对象

                    Map<Integer, String> map = new HashMap<>();

                    //往map对象添加月份序号和英文缩写的键值对数据

                    map.put(1, "Jan");

                    map.put(2, "Feb");

                    map.put(3, "Mar");

                    map.put(4, "Apr");

                    map.put(5, "May");

                    //控制台输出整个map对象

                    System.out.println("map对象所有数据: " + map);

                    //控制台输出第三月的英文缩写

                    System.out.println("第3月是: " + map.get(3));

            }

    }

    上例输出结果如下:

    map对象所有数据: {1=Jan, 2=Feb, 3=Mar, 4=Apr, 5=May}

    第3月是: Mar

    由于Map是接口,所以初始化用了它的实现类HashMap,给map对象赋值使用put方法,第一个参数是key,第二个参数是value。这里要注意:HashMap是可以用null作为key的。

    当直接输出map对象时,从结果可以看出,它重写了toString方法,把map中的所有数据按key=value的格式返回,每对键值对之间用逗号分隔。

    当要获取指定key的value时,使用get方法,参数为key。

    3、Map遍历

    上面例子中是在已知key的情况下,才能获取其对应的value,如果不知道Map里有哪些key的情况下怎么办呢?这时候就需要用到Map的遍历,Map也跟Array或List一样具有遍历的方法,通过遍历能获得每一个key、value或者key-value键值对。遍历Map有如下几种方式:

    3.1、只遍历key

    当只需要获取key列表,而不关心value时用此方式。推荐使用!

    package com.hqyj;

    import java.util.HashMap;

    import java.util.Map;

    public class LoopMap {

            public static void main(String[] args) {

                    //初始化map对象

                    Map<Integer, String> map = new HashMap<>();

                    //往map对象添加月份序号和英文缩写的键值对数据

                    map.put(1, "Jan");

                    map.put(2, "Feb");

                    map.put(3, "Mar");

                    map.put(4, "Apr");

                    map.put(5, "May");

                    //遍历所有的key

                    for(Integer k : map.keySet()) {

                            System.out.println(k);

                    }

            }

    }

    输出结果如下:

    1

    2

    3

    4

    5

    3.2、只遍历value

    当只需要获取value列表,而不关心key时用此方式。推荐使用!

    package com.hqyj;

    import java.util.HashMap;

    import java.util.Map;

    public class LoopMap {

            public static void main(String[] args) {

                    //初始化map对象

                    Map<Integer, String> map = new HashMap<>();

                    //往map对象添加月份序号和英文缩写的键值对数据

                    map.put(1, "Jan");

                    map.put(2, "Feb");

                    map.put(3, "Mar");

                    map.put(4, "Apr");

                    map.put(5, "May");

                    //遍历所有的value

                    for(String v : map.values()) {

                            System.out.println(v);

                    }

            }

    }

    输出结果如下:

    Jan

    Feb

    Mar

    Apr

    May

    3.3 遍历Entry对象

    当既需要key,也需要value时,使用此方式。推荐使用!

    package com.hqyj;

    import java.util.HashMap;

    import java.util.Map;

    public class LoopMap {

            public static void main(String[] args) {

                    //初始化map对象

                    Map<Integer, String> map = new HashMap<>();

                    //往map对象添加月份序号和英文缩写的键值对数据

                    map.put(1, "Jan");

                    map.put(2, "Feb");

                    map.put(3, "Mar");

                    map.put(4, "Apr");

                    map.put(5, "May");

                    //遍历所有的Entry(key和value)

                    for(Map.Entry<Integer, String> entry : map.entrySet()) {

                            System.out.println(entry.getKey() + ": " + entry.getValue());

                    }

            }

    }

    输出结果如下:

    1: Jan

    2: Feb

    3: Mar

    4: Apr

    5: May

    3.4 使用forEach方法加Lambda遍历

    这种方式也可同时遍历key和value,但是使用到了Lambda表达式,需要JDK1.8以上版本。推荐使用!

    package com.hqyj;

    import java.util.HashMap;

    import java.util.Map;

    public class LoopMap {

            public static void main(String[] args) {

                    //初始化map对象

                    Map<Integer, String> map = new HashMap<>();

                    //往map对象添加月份序号和英文缩写的键值对数据

                    map.put(1, "Jan");

                    map.put(2, "Feb");

                    map.put(3, "Mar");

                    map.put(4, "Apr");

                    map.put(5, "May");

                    //使用forEach方法加Lambda遍历

                    map.forEach((k, v)->System.out.println(k + ": " + v));

            }

    }

    输出结果如下:

    1: Jan

    2: Feb

    3: Mar

    4: Apr

    5: May

    3.5 使用Iterator遍历

    虽然这种方式也能得到正确结果,但是过于复杂,有多此一举之嫌。不推荐使用!

    package com.hqyj;

    import java.util.HashMap;

    import java.util.Iterator;

    import java.util.Map;

    public class LoopMap {

            public static void main(String[] args) {

                    //初始化map对象

                    Map<Integer, String> map = new HashMap<>();

                    //往map对象添加月份序号和英文缩写的键值对数据

                    map.put(1, "Jan");

                    map.put(2, "Feb");

                    map.put(3, "Mar");

                    map.put(4, "Apr");

                    map.put(5, "May");

                    //使用Iterator遍历

                    Iterator<Map.Entry<Integer, String>> iterator = map.entrySet().iterator();

                    while(iterator.hasNext()) {

                            Map.Entry<Integer, String> entry = iterator.next();

                            System.out.println(entry.getKey() + ": " + entry.getValue());

                    }

            }

    }

    输出结果如下:

    1: Jan

    2: Feb

    3: Mar

    4: Apr

    5: May

    3.6 通过key遍历value

    这种方式显得不伦不类,如果已知key要获取单个value,直接用get方法;如果要获取所有的value,请用values方式遍历。不推荐使用!

    package com.hqyj;

    import java.util.HashMap;

    import java.util.Map;

    public class LoopMap {

            public static void main(String[] args) {

                    //初始化map对象

                    Map<Integer, String> map = new HashMap<>();

                    //往map对象添加月份序号和英文缩写的键值对数据

                    map.put(1, "Jan");

                    map.put(2, "Feb");

                    map.put(3, "Mar");

                    map.put(4, "Apr");

                    map.put(5, "May");

                    //通过key遍历value

                    for(Integer i : map.keySet()) {

                            System.out.println(map.get(i));

                    }

            }

    }

    输出结果如下:

    Jan

    Feb

    Mar

    Apr

    May

    上一篇:C语言:数据指针

    下一篇:ARM工程师是干啥的?

    热点文章推荐
    华清学员就业榜单
    高薪学员经验分享
    热点新闻推荐
    前台专线:010-82525158 企业培训洽谈专线:010-82525379 院校合作洽谈专线:010-82525379 Copyright © 2004-2021 北京华清远见科技发展有限公司 版权所有 ,京ICP备16055225号-5,京公海网安备11010802025203号

    回到顶部

    welcome购彩中心