当然可以 👍 我来帮你详细讲解一下 Map 的循环遍历(以 Java 为例),并顺带说明在其他语言(如 Python、Go、JavaScript)中也怎么写。
🧭 一、Java 中 Map 的循环遍历
在 Java 中,Map<K,V>
是一种键值对集合,比如 HashMap
、LinkedHashMap
、TreeMap
等。
常见的 5 种遍历方式如下👇
① 使用 entrySet()
遍历(最常见、高效 ✅)
Map<String, Integer> map = new HashMap<>();
map.put("apple", 3);
map.put("banana", 2);
map.put("orange", 5);
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + " => " + entry.getValue());
}
✅ 优点:同时获取 key 和 value,性能最好。
② 使用 keySet()
遍历(只需要键)
for (String key : map.keySet()) {
System.out.println("Key = " + key + ", Value = " + map.get(key));
}
⚠️ 缺点:map.get()
可能引起二次查找,效率略低。
③ 使用 values()
遍历(只关心值)
for (Integer value : map.values()) {
System.out.println("Value = " + value);
}
④ 使用 Java 8 Lambda / Stream
map.forEach((key, value) -> {
System.out.println(key + " => " + value);
});
✅ 写法最简洁,推荐用于现代代码。
⑤ 使用迭代器 Iterator
Iterator<Map.Entry<String, Integer>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<String, Integer> entry = iterator.next();
System.out.println(entry.getKey() + " => " + entry.getValue());
}
✅ 可在遍历时安全地删除元素。
🌍 二、其他语言的 map 遍历写法对比
语言 | 遍历写法 |
---|---|
Python | for k, v in dict.items(): print(k, v) |
Go | for k, v := range myMap { fmt.Println(k, v) } |
JavaScript | for (let [k, v] of myMap) { console.log(k, v) } |
C# | foreach (var kv in dict) { Console.WriteLine($"{kv.Key}={kv.Value}"); } |
📘 小结
方式 | 获取键 | 获取值 | 性能 | 推荐度 |
---|---|---|---|---|
entrySet() | ✅ | ✅ | ⭐⭐⭐⭐ | ✅ 推荐 |
keySet() | ✅ | ✅ (需 get) | ⭐⭐ | ❌ |
values() | ❌ | ✅ | ⭐⭐⭐ | — |
forEach() | ✅ | ✅ | ⭐⭐⭐⭐ | ✅ 推荐 |
Iterator | ✅ | ✅ | ⭐⭐⭐ | 用于删除时 |
发表回复