
在 Java 编程中,HashMap 是常用数据结构,用于存储键值对。实际开发中,高效灵活遍历是核心技巧。本文将深入探讨四种遍历 HashMap 的方法(基于 KeySet、EntrySet、Iterator、Lambda 表达式)并对比差异和适用场景

原理:keySet()返回 HashMap 键的集合视图(HashSet 实现),遍历时先取键再用 map.get(key)取对应值。
特点:需两次调用,适用于只处理键的情况
Map<String, Integer> map = new HashMap<>();
// ...填充map数据...
for (String key : map.keySet()) {
Integer value = map.get(key);
System.out.println("Key: " + key + ", Value: " + value);
}原理:entrySet()返回包含 HashMap 键值对的集合视图(HashSet 实现),元素为 Map.Entry 对象,可通过.getKey()和.getValue()获取键值。
特点:一次性获取键值对信息,效率高,是最推荐的遍历方式。
for (Map.Entry<String, Integer> entry : map.entrySet()) {
String key = entry.getKey();
Integer value = entry.getValue();
System.out.println("Key: " + key + ", Value: " + value);
}原理:通过调用 iterator()或基于 KeySet/EntrySet 的 iterator()方法获取迭代器遍历,能提供更多控制如删除当前元素。
。特点:具与 EntrySet 相似功能及迭代器灵活性,支持 remove()方法.
Iterator<Map.Entry<String, Integer>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<String, Integer> entry = iterator.next();
// 同样可以获取键值对
System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
}原理:利用Java 8引入的Stream API和Consumer接口,通过forEach()方法遍历HashMap,并使用lambda表达式来处理键值对。
特点:代码简洁高效,易于阅读和编写,能够无缝衔接其他流式操作(filter、map、reduce等)。但这种方式并不支持在遍历过程中修改原HashMap,因为修改会导致并发修改异常。
map.forEach((key, value) -> {
System.out.println("Key: " + key + ", Value: " + value);
});原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。