HashMap的4种遍历方式

HashMap我们经常用到,所以还是要知道下HashMap是如何取值的。

HashMap的4种遍历方式:

package net.stxy.one.utils;

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

/**
 * Created by ASUS on 2018/5/26
 *
 * @Authod Grey Wolf
 */
public class Test {

    public static void main(String[] args) {

        Map,String>map=new HashMap , String>(8);
        int i;
       for (i=0;i<3;i++){
           map.put("map"+i,"map"+i);
       }
       Test t=new Test();
        t.sysmap1(map);
        t.sysmap2(map);
        t.sysmap3(map);
        t.sysmap4(map);
    }

    private void sysmap4(Map, String> map) {
        System.out.println("第四种:");
        //获取map中的所有值,遍历后可以取得每一个值,但是得不到key
        for (String value:map.values()){
            System.out.println("value:"+value);
        }
    }

    private void sysmap3(Map, String> map) {
        System.out.println("第三种:");
        //最常用的方式,获取map的所有key,循环每个key,获取key对应的值
        for (String key:map.keySet()){
            System.out.println("key:"+key+"------value:"+map.get(key));
        }
    }

    private void sysmap2(Map, String> map) {
        System.out.println("第二种:");
        //将map转换成set集合,使用增强for直接遍历集合中的数据
        for (Map.Entry,String>entry:map.entrySet()){
            System.out.println("key:"+entry.getKey()+"------value:"+entry.getValue());
        }
    }

    private void sysmap1(Map, String> map) {
        System.out.println("第一种:");
        //将map转换成set集合,使用set的迭代器,可以在不知道key的情况下遍历Map对象
        Iterator iterator=map.entrySet().iterator();
        while (iterator.hasNext()){
            Map.Entry,String>entry= (Map.Entry, String>) iterator.next();
            System.out.println("key:"+entry.getKey()+"------value:"+entry.getValue());
        }
    }


}

结果:

第一种:
key:map2------value:map2
key:map1------value:map1
key:map0------value:map0
第二种:
key:map2------value:map2
key:map1------value:map1
key:map0------value:map0
第三种:
key:map2------value:map2
key:map1------value:map1
key:map0------value:map0
第四种:
value:map2
value:map1
value:map0

Process finished with exit code 0


我的座右铭:不会,我可以学;落后,我可以追赶;跌倒,我可以站起来;我一定行。



你可能感兴趣的:(java基础)