java零基础入门-Map遍历

举报
喵手 发表于 2024/11/29 01:29:06 2024/11/29
【摘要】 ​一、教学目标能够使用[键找值]的方式遍历map集合。能够使用[键值对]的方式遍历map集合。二、正文        本期教学内容,我要教大家一个好玩的东西,估计也是很多小伙伴惦记的知识点,如何对map集合进行遍历?这个问题呢?我将会通过两种不同的遍历实现方式分别给大家进行教学演示,具有很好的入门学习价值,请大家好好听。1、Map集合遍历-键找值方式(效率低)        说起遍历,map...

一、教学目标

  • 能够使用[键找值]的方式遍历map集合。
  • 能够使用[键值对]的方式遍历map集合。

二、正文

        本期教学内容,我要教大家一个好玩的东西,估计也是很多小伙伴惦记的知识点,如何对map集合进行遍历?这个问题呢?我将会通过两种不同的遍历实现方式分别给大家进行教学演示,具有很好的入门学习价值,请大家好好听。

1、Map集合遍历-键找值方式(效率低)

        说起遍历,map自身带有这么一个方法:keySet()。我们先来简单研究一下,该方法是干啥用的?在学习map集合时,我对这个方法我是没有提及的,不知道优美与小伙伴是自己私下了解过的?如果有,说明你觉悟很高哦,继续保持,而没有私下自己去主动拓展学习的小伙伴,这你们可得好好反思一下了啊,为何大佬与你差距会如此之大?

        好,说起keySet(),它的作用就是获取map集合中的所有键。我说到这里了,你们就应该可以猜到我要如何实现通过该遍历目标了。

我们先来简单演示一下:

    @Test
    public void testMapKeySet() {

        //创建一个map集合容器
        Map<String, String> map = new HashMap<>();

        //添加元素
        map.put("黄忠", "射手");
        map.put("吕布", "战士");
        map.put("妲己", "法师");
        System.out.println(map.keySet());
    }

控制台打印输出结果:

[吕布, 妲己, 黄忠]

         既然通过keySet()方法可以获取到map集合中的所有键,那么我们不妨结合get(),不就达成了遍历的目标啦,你们觉得呢?

键找值方式遍历代码演示如下:

    @Test
    public void testMapKeySet() {

        //创建一个map集合容器
        Map<String, String> map = new HashMap<>();

        //添加元素
        map.put("黄忠", "射手");
        map.put("吕布", "战士");
        map.put("妲己", "法师");

        Set<String> keys = map.keySet();
        System.out.println("map所有的键为:" + keys);

        //键找值遍历方式
        for(String key:keys){
            //通过key获取对应的值
            String value = map.get(key);

            System.out.println(key+"所对应的值为:"+value);
        }
    }

控制台打印输出结果:

map所有的键为:[吕布, 妲己, 黄忠]
吕布所对应的值为:战士
妲己所对应的值为:法师
黄忠所对应的值为:射手

        你们看明白了么?取之于map,用之于map。相对遍历方式也是比较能理解的吧?

2、Map集合遍历-键值对方式

        以上方式我是演示完了,那么对于键值对的遍历方式对map进行遍历,这我还需要讲么?小伙伴么,你们说我还需要讲一讲么,所谓的键值对,就是通过遍历map集合全身,你们可以想象对于单列集合是如何遍历的,举一反三。

        还是看到有的小伙伴对于双列集合不是很了解,“单列直接就是直接list.get(index),那双列,我不会,还得需要你带带我”。问题不大,那我就也简单给大家简单演示一下吧。
方式一:可以结合map提供的entrySet()方法进来遍历。

        这里可能就要给大家科普一下了,entrySet()方法,它的作用就是获取到Map集合中所有的键值对对象的集合(Set集合)。

Set<Map.Entry<K, V>> entrySet();

键值对遍历方式代码演示如下:

    @Test
    public void testMapFor() {

        //创建一个map集合容器
        Map<String, String> map = new HashMap<>();

        //添加元素
        map.put("黄忠", "射手");
        map.put("吕布", "战士");
        map.put("妲己", "法师");

        //获取所有的entry对象
        Set<Map.Entry<String, String>> entrySet = map.entrySet();

        //键值对方式遍历
        for (Map.Entry<String, String> entry : entrySet) {
            //解析entry对象
            String key = entry.getKey();
            String value = entry.getValue();
            System.out.println(key + "所对应的值为:" + value);
        }
    }

控制台打印输出结果:

吕布所对应的值为:战士
妲己所对应的值为:法师
黄忠所对应的值为:射手

        补充一点,其中遍历entrySet集合所获取到的Entry对象,它是在map中是一一对应关系, entry项将键值对的对应关系封装成了键值对对象,这样在遍历map时,就可以从每个entry对象中获取对应的键与对应的值。

        像这种遍历方式,主要还是对entrySet()方法的一个运用。接下来就是纯原生遍历方式了。我们直接使用Iterator迭代器来进行对map遍历。

方式二:可以结合Iterator迭代器使用。

键值对遍历方式代码演示如下:

    @Test
    public void testMapByIterator() {

        //创建一个map集合容器
        Map<String, String> map = new HashMap<>();

        //添加元素
        map.put("黄忠", "射手");
        map.put("吕布", "战士");
        map.put("妲己", "法师");

        //获取所有的entry对象
        Iterator<Map.Entry<String, String>> iterator = map.entrySet().iterator();

        //Iterator迭代器
        while (iterator.hasNext()) {
            Map.Entry<String, String> next = iterator.next();

            System.out.println(next.getKey() + "所对应的值为:" + next.getValue());
        }
    }

控制台打印输出结果:

吕布所对应的值为:战士
妲己所对应的值为:法师
黄忠所对应的值为:射手

        总而言之,以上提供了三种遍历方式,相对而言,通过map键找值的方式效率是最低的,这我不推荐大家在日常过程中使用哈。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。