高效遍历Map

    for(Iterator ite = map.entrySet().iterator(); ite.hasNext();){    
          Map.Entry entry = (Map.Entry) ite.next();    
          entry.getKey();    
          entry.getValue();  
    }  


在 Java 中遍历 `Map` 集合有多种方式,每种方式适用于不同的场景。以下是几种常见的遍历方法: ### 1. 遍历 `Map` 的 `keySet` 并通过 `key` 获取 `value` 这种方法通过遍历 `Map` 的 `keySet`,然后使用 `key` 获取对应的 `value`。适用于不需要直接操作 `Entry` 的场景。 ```java Map<String, Integer> map = new HashMap<>(); map.put("one", 1); map.put("two", 2); map.put("three", 3); for (String key : map.keySet()) { Integer value = map.get(key); System.out.println("Key: " + key + ", Value: " + value); } ``` ### 2. 使用 `Iterator` 遍历 `keySet` 这种方式允许在遍历过程中进行更细粒度的控制,例如在遍历时删除元素。 ```java long startTime1 = System.currentTimeMillis(); Iterator<String> iter = map.keySet().iterator(); while (iter.hasNext()) { String key = iter.next(); Integer value = map.get(key); System.out.println("Key: " + key + ", Value: " + value); } long endTime1 = System.currentTimeMillis(); System.out.println("程序运行时间:" + (endTime1 - startTime1) + "ms"); ``` ### 3. 遍历 `Map` 的 `entrySet` 这种方式直接遍历 `Map` 中的键值对(`Entry`),适用于需要同时操作 `key` 和 `value` 的场景。 ```java for (Map.Entry<String, Integer> entry : map.entrySet()) { String key = entry.getKey(); Integer value = entry.getValue(); System.out.println("Key: " + key + ", Value: " + value); } ``` ### 4. 使用 `Iterator` 遍历 `entrySet` 这种方式允许在遍历时进行删除操作,同时直接获取 `Entry`。 ```java Iterator<Map.Entry<String, Integer>> entryIter = map.entrySet().iterator(); while (entryIter.hasNext()) { Map.Entry<String, Integer> entry = entryIter.next(); String key = entry.getKey(); Integer value = entry.getValue(); System.out.println("Key: " + key + ", Value: " + value); } ``` ### 5. 使用 Java 8 的 `Stream` API 遍历 如果使用的是 Java 8 或更高版本,可以利用 `Stream` API 来简化遍历操作。 ```java map.forEach((key, value) -> System.out.println("Key: " + key + ", Value: " + value)); ``` --- ### 效率比较 在性能方面,遍历 `entrySet` 通常比遍历 `keySet` 更高效,因为 `entrySet` 直接访问键值对,而 `keySet` 需要额外的 `get` 操作来获取 `value`。 --- ### 示例代码总结 以下是一个完整的示例代码,演示如何使用不同的方式遍历 `Map`: ```java import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; public class MapTraversalExample { public static void main(String[] args) { Map<String, Integer> map = new HashMap<>(); map.put("one", 1); map.put("two", 2); map.put("three", 3); // 方法1:遍历 keySet 获取 key 和 value System.out.println("方法1:遍历 keySet 获取 key 和 value"); for (String key : map.keySet()) { Integer value = map.get(key); System.out.println("Key: " + key + ", Value: " + value); } // 方法2:使用 Iterator 遍历 keySet System.out.println("方法2:使用 Iterator 遍历 keySet"); Iterator<String> iter = map.keySet().iterator(); while (iter.hasNext()) { String key = iter.next(); Integer value = map.get(key); System.out.println("Key: " + key + ", Value: " + value); } // 方法3:遍历 entrySet System.out.println("方法3:遍历 entrySet"); Set<Map.Entry<String, Integer>> entrySet = map.entrySet(); for (Map.Entry<String, Integer> entry : entrySet) { String key = entry.getKey(); Integer value = entry.getValue(); System.out.println("Key: " + key + ", Value: " + value); } // 方法4:使用 Iterator 遍历 entrySet System.out.println("方法4:使用 Iterator 遍历 entrySet"); Iterator<Map.Entry<String, Integer>> entryIter = map.entrySet().iterator(); while (entryIter.hasNext()) { Map.Entry<String, Integer> entry = entryIter.next(); String key = entry.getKey(); Integer value = entry.getValue(); System.out.println("Key: " + key + ", Value: " + value); } // 方法5:使用 Java 8 的 Stream API System.out.println("方法5:使用 Java 8 的 Stream API"); map.forEach((key, value) -> System.out.println("Key: " + key + ", Value: " + value)); } } ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值