Java Map遍历的方式

准备工作

构建一个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()高

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Java中,Map是一种键值对的数据结构,用于存储和操作键值对。遍历Map可以通过以下几种方式实现: 1. 使用entrySet()方法遍历:通过Map的entrySet()方法获取到Map中所有的键值对,然后使用增强型for循环遍历每个键值对,可以分别获取到键和值。 ```java Map<String, Integer> map = new HashMap<>(); // 添加键值对 map.put("A", 1); map.put("B", 2); map.put("C", 3); // 遍历Map for (Map.Entry<String, Integer> entry : map.entrySet()) { String key = entry.getKey(); Integer value = entry.getValue(); System.out.println("Key: " + key + ", Value: " + value); } ``` 2. 使用keySet()方法遍历:通过Map的keySet()方法获取到Map中所有的键,然后使用增强型for循环遍历每个键,可以通过键获取到对应的值。 ```java Map<String, Integer> map = new HashMap<>(); // 添加键值对 map.put("A", 1); map.put("B", 2); map.put("C", 3); // 遍历Map for (String key : map.keySet()) { Integer value = map.get(key); System.out.println("Key: " + key + ", Value: " + value); } ``` 3. 使用forEach()方法遍历Java 8及以上):通过Map的forEach()方法结合Lambda表达式遍历Map中的每个键值对。 ```java Map<String, Integer> map = new HashMap<>(); // 添加键值对 map.put("A", 1); map.put("B", 2); map.put("C", 3); // 遍历Map map.forEach((key, value) -> { System.out.println("Key: " + key + ", Value: " + value); }); ``` 以上是三种常用的遍历Map方式,根据具体的需求选择适合的方式进行遍历
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

睡竹

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

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

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

打赏作者

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

抵扣说明:

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

余额充值