java面试必知必会遍历map键值对的四种方式

   Map结构是一个键值对结构形式的集合,在平时的使用中也很常见,历史文章数据很早就写过使用map并发控制进行业务场景的处理,翻看历史文章就可找到。

    这次主要以代码示例的方式进行介绍一下如何使用合理的方式进行处理map的键和值数据的。

进行map数据的模拟
 Map<String, Integer> map = new HashMap<>(16, 0.75f);
        map.put("a", 1);
        map.put("b", 2);
        map.put("c", 3);
        map.put("d", 4);
        map.put("e", 5);

第一种方式获取键值对集合entrySet,分别获取key,value

log.debug("获取键值对集合,分别获取key,value");
        for (Map.Entry entry : map.entrySet()) {
            log.info("map键:[{}],map值:[{}]", entry.getKey(), entry.getValue());
        }

第二种方式获取键集合,然后循环遍历key,本次使用了2种方式进行遍历推荐第二种方式,简单。

log.debug("获取键集合,然后循环遍历key,本次使用了2种方式进行遍历推荐第二种方式,简单");
        for (String key : map.keySet()) {
            log.info("map-key:[{}]", key);
        }
        map.keySet().forEach(x -> {
            log.info("map-key-for-each:[{}]", x);
        });

第三种方式获取值集合,然后循环遍历value,本地使用了2种方式进行遍历,推荐第一种方式,简单。

log.debug("获取值集合,然后循环遍历value,本地使用了2中方式进行遍历,推荐第一种方式,简单");
        Collection<Integer> values = map.values();
        values.stream().forEach(x -> log.info("map-value:[{}]", x));


        for (Integer value : map.values()
        ) {
            log.info("map-value-for:[{}]", value);
        }

第四种方式获取迭代器,效率不高,不推荐使用。

 log.debug("获取迭代器iterator然后根据迭代器进行获取key,value");
        Iterator<Map.Entry<String, Integer>> entryIterator = map.entrySet().iterator();
        while (entryIterator.hasNext()) {
            Map.Entry<String, Integer> entry = entryIterator.next();
            log.info("map键:[{}],map值:[{}]", entry.getKey(), entry.getValue());
        }
        log.debug("先获取key键集合,循环遍历key,根据key获取value");
        Set<String> keySet = map.keySet();
        keySet.forEach(k -> {
            log.info("map键:[{}],map值:[{}]", k, map.get(k));
        });
        for (String key : keySet
        ) {
            log.info("map-for map键:[{}],map值:[{}]", key, map.getOrDefault(key, null));
        }

以上就是目前自己总结的如何遍历map键值对数据的四种方式,推荐使用entrySet进行获取,这样的效率更高,可以增加数据集进行模拟一下。

最后给你们简单使用一下java8方式进行map数据的遍历输出。

      log.debug("使用java8提供的方法进行遍历一下");
        map.forEach((key, value) -> {
            log.info("map键:[{}],map值:[{}]", key, value);
        });

要分享的内容到这里就结束了,希望可以帮助到你,喜欢我文章的可以点击关注给个在看呗。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值