JavaMap两种遍历方式keySet与entrySet详解

 更新时间:2023年03月15日 09:22:49   作者:自律的西瓜L  
这篇文章主要介绍了JavaMap两种遍历方式keySet与entrySet,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧

1.使用keySet进行遍历

实现步骤:

(1)使用Map集合中的方法keySet(),把Map集合所有的key取出来,存储到一个Set集合中

(2)遍历set集合,获得Map集合中的每一个key

(3)通过Map集合中的方法get(key),通过key找到value

	@Test
    public void testKeySet() {
        Map<String, Integer> map = new ConcurrentHashMap<>(16);
        map.put("one",1);
        map.put("two",2);
        map.put("three",3);
        // 1.增强for循环遍历map中的key
        for (String key : map.keySet()) {
            // 通过key找到对应的value
            Integer value = map.get(key);
            System.out.println(key + "->" +value);
        }
        System.out.println("------------------------");
        // 2.使用迭代器来进行遍历(map集合中所有的key取出来,存储到Set集合中)
        Iterator<String> iteratorKey = map.keySet().iterator();
        while (iteratorKey.hasNext()){
            String key = iteratorKey.next();
            Integer value = map.get(key);
            System.out.println(key + "->" +value);
        }
    }

2.使用entrySet进行遍历

实现步骤:

(1)Map.entrySet()把map的键值映射成Set集合

(2)Map.entrySet迭代器会生成EntryIterator,其返回的实例是一个包含key/value键值对的对象

(3)getKey(): 返回键值对的key

(4)getValue(): 返回键值对的value

    @Test
    public void testEntrySet() {
        Map<String, Integer> map = new ConcurrentHashMap<>(16);
        map.put("one",1);
        map.put("two",2);
        map.put("three",3);
        // Map.entrySet迭代器会生成EntryIterator,其返回的实例是一个包含key/value键值对的对象。
        // 而keySet中迭代器返回的只是key对象,还需要到map中二次取值。故entrySet要比keySet快一倍左右。
        Set<Map.Entry<String, Integer>> entries = map.entrySet();
        Iterator<Map.Entry<String, Integer>> entryIterator = entries.iterator();
        while (entryIterator.hasNext()){
            // 迭代出来的是每一个实例的对象,包含键值对
            Map.Entry<String, Integer> entry = entryIterator.next();
            String key = entry.getKey();
            Integer value = entry.getValue();
            System.out.println(key + "->" + value);
        }
    }

3.对比

(1)keySet获取value只能通过先获取key才能得到value

(2)entrySet在迭代之后可以直接从迭代出来的实例对象中直接获取Key和Value

(3)两个方法遍历的结果都一样,若对查询速度有要求就选entrySet(),entrySet可以提高性能。

到此这篇关于JavaMap两种遍历方式keySet与entrySet详解的文章就介绍到这了,更多相关JavaMap keySet与entrySet内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java和javascript中过滤掉img形式的字符串不显示图片的方法

    java和javascript中过滤掉img形式的字符串不显示图片的方法

    这篇文章主要介绍了java和javascript中过滤掉img形式的字符串不显示图片的方法,以实例形式分别讲述了采用java和javascript实现过滤掉img形式字符串的技巧,需要的朋友可以参考下
    2015-02-02
  • JDK动态代理之ProxyGenerator生成代理类的字节码文件解析

    JDK动态代理之ProxyGenerator生成代理类的字节码文件解析

    这篇文章主要为大家详细介绍了JDK动态代理之ProxyGenerator生成代理类的字节码文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • Springboot POI导出Excel(浏览器)

    Springboot POI导出Excel(浏览器)

    这篇文章主要为大家详细介绍了Springboot POI导出Excel,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-05-05
  • Java通过stmp协议发送邮件

    Java通过stmp协议发送邮件

    这篇文章主要为大家详细介绍了Java通过stmp协议发送邮件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02
  • java 中使用maven shade plugin 打可执行Jar包

    java 中使用maven shade plugin 打可执行Jar包

    这篇文章主要介绍了java 中使用maven shade plugin 打可执行Jar包的相关资料,需要的朋友可以参考下
    2017-05-05
  • Java +Tomcat + SpringMVC实现页面访问示例解析

    Java +Tomcat + SpringMVC实现页面访问示例解析

    这篇文章主要介绍了Java +Tomcat + SpringMVC实现页面访问示例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Druid(新版starter)在SpringBoot下的使用教程

    Druid(新版starter)在SpringBoot下的使用教程

    Druid是Java语言中最好的数据库连接池,Druid能够提供强大的监控和扩展功能,DruidDataSource支持的数据库,这篇文章主要介绍了Druid(新版starter)在SpringBoot下的使用,需要的朋友可以参考下
    2023-05-05
  • MyBatisPlus PaginationInterceptor分页插件的使用详解

    MyBatisPlus PaginationInterceptor分页插件的使用详解

    这篇文章主要介绍了MyBatisPlus PaginationInterceptor分页插件的使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 基于Feign使用okhttp的填坑之旅

    基于Feign使用okhttp的填坑之旅

    这篇文章主要介绍了基于Feign使用okhttp的填坑之旅,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • javaweb实现简易邮件发送

    javaweb实现简易邮件发送

    这篇文章主要为大家详细介绍了javaweb实现简易邮件发送,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06

最新评论