Java Map遍历的方式

本文介绍了Java中Map的三种遍历方式:通过keySet、entrySet以及JDK8及以上版本的lambda表达式forEach。详细对比了它们的实现原理和效率,强调在实际开发中,考虑到性能和简洁性,推荐使用JDK8的lambda表达式进行遍历。同时,指出了keySet()和entrySet()的区别,entrySet()由于避免了二次遍历,其效率更高。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

准备工作

构建一个Map

//创建map及数据
Map<String, Object> map = new HashMap<>();
map.put("name", "张三");
map.put("age", 20);
map.put("sex", "男");

方式1

通过Map.keySet()进行遍历,可以直接遍历,也可以通过迭代器【效率低,工作中不推荐】进行遍历

1、直接遍历

for (String key : map.keySet()) {
     System.out.println("key = " + key + ", value = " + map.get(key));
}

2、通过.迭代器:iterator()进行遍历

Iterator<String> iterator = map.keySet().iterator();
while (iterator.hasNext()) {
    String key = iterator.next();
    Object value = map.get(key);
    System.out.println("key:----"+key+"---value:---"+value);
}

方式2

通过Map.entrySet()进行遍历

1、直接遍历

for (Map.Entry<String, Object> entry : map.entrySet()) {
     System.out.println("key = " + entry.getKey() + ", value = " + entry.getValue());
}

2、通过.迭代器:iterator()进行遍历

Iterator<Map.Entry<String, Object>> iterator2 = map.entrySet().iterator();
while (iterator2.hasNext()) {
   Map.Entry<String, Object> entry = iterator2.next();
   System.out.println(entry);
}

方式3

JDK8及以上,通过 lambda 表达式 forEach 遍历

map.forEach((k, v) -> System.out.println("key = " + k + ", value = " + v));

总结

一般开发的JDK都是在8及以上的,推荐直接使用方式3(lambda 表达式),方式3是Map.entrySet()的一种封装,性能与Map.entrySet()一致

Map.entrySet()与Map.keySet()的区别:

keySet()获取的是一个无序的Set类型,存储Map中所有的key,我们在遍历map时,需要对该Set进行再次遍历,因此效率较低(遍历了2次)

entrySet()获取的是一个Map.Entry类型,该类型时Map中的静态内部类,直接存储着Map中的Key和Value,并可以通过内部类中的getKey()和getValue()方法,直接获取key和value,entrySet()只进行了一次遍历,因此效率比keySet()高

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

睡竹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值