DESKTOP-7803S27_20200911-吴远亮

问题

练习 Map 集合的遍历方式。

解决方法

因为java.util.Map接口没有继承java.lang.Iterable接口,因此不可以通过迭代器或for-each来直接迭代Map集合,所以可以通过以下三个方式达到遍历的效果。

方式一:通过keySet() 方法可以获得Map实例中所有的key组成的Set集合,随后迭代key组成的Set集合

public class MapTest1 {
    public static void main(String[] args) {
        Map<String,Integer> map=Map.of("AAA", 11,"BBB", 22, "CCC", 33, "DDD", 44, "EEE", 55);
        System.out.println(map);
        System.out.println("- - - - -  - - - - - - - - - -");
        Set<String> set=map.keySet();
        Iterator<String> iter=set.iterator();
        while(iter.hasNext()) {
            String s=iter.next();
            Integer inte=map.get(s);
            System.out.println(s+"==>>"+inte);
        }
        System.out.println("- - - - - - - - - - - - - - -  - - - - ");
        for(String s:set) {
            Integer inte=map.get(s);
            System.out.println(s+"--->>"+ inte);
        }
    }

}

方式二:通过 entrySet() 方法可以获得Map实例中所有的Entry组成的Set集合

public class MapTest2 {

    public static void main(String[] args) {
        
        Map<String , Integer> map=Map.of("AAA", 11,"BBB", 22, "CCC", 33, "DDD", 44, "EEE", 55);
        
        Set<Map.Entry<String,Integer>> set=map.entrySet();
        
        Iterator<Map.Entry<String,Integer>> iter=set.iterator();
        while(iter.hasNext()){
            System.out.println(iter.next());
        }

        System.out.println("- - - - - - - - - - - - - - - - - -  - - ");
        
        for(Map.Entry<String,Integer> entry : set) {
            System.out.println(entry);
        }

    }

}

方式三:通过 values() 可以获得Map实例中所有的value组成的Collection集合(因为一个value 可以重复,所以不能放入 set 集合,而且也不能通过value 来获得 key ,所以本方式只能获得 value 的遍历)

public class MapTest3 {
    public static void main(String[] args) {
        Map<String,Integer> map=Map.of("AAA", 11,"BBB", 22, "CCC", 33, "DDD", 44, "EEE", 55);
        Collection<Integer> coll=map.values();
        
        for(Integer inte : coll) {
            System.out.println(inte);
        }
        System.out.println("- -- - -- - --- -------------  -- ");
        Iterator<Integer> iter=coll.iterator();
        while(iter.hasNext()) {
            System.out.println(iter.next());
        }

    }

}

吐槽

这几天的天气都有点热,买的风扇终于到了,爽呀。

标签

© 2021 成都云创动力科技有限公司 蜀ICP备20006351号-1