• Map常见的遍历方式-keySet 和 entrySet


    1.使用keySet进行遍历

    实现步骤:

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

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

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

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

    2.使用entrySet进行遍历

    实现步骤:

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

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

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

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

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

    3.对比

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

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

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

  • 相关阅读:
    经过几年和前端调接口,我把抓包调试摸透了,浏览器岂非我对手
    laravel框架 - 事件与监听器
    ImportError: cannot import name ‘open_filename‘ from ‘pdfminer.utils‘已搞定
    prim算法的实现
    数智赋能!麒麟信安参展全球智慧城市大会
    软件项目管理 6.10.成本预算
    MybatisPlus 常用注解
    vulnhub靶场之DEATHNOTE: 1
    如何在Proteus进行STM32F103C8T6模拟以及keil5开发
    顶级手机数据恢复软件 [2024 更新]
  • 原文地址:https://blog.csdn.net/weixin_42218169/article/details/126143697