本文主要是介绍Java中Map的五种遍历方式实现与对比,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
《Java中Map的五种遍历方式实现与对比》其实Map遍历藏着多种玩法,有的优雅简洁,有的性能拉满,今天咱们盘一盘这些进阶偏基础的遍历方式,告别重复又臃肿的代码,感兴趣的小伙伴可以了解下...
提起Java中Map的遍历,很多人第一反应还是: for (Map.Entry<K,V> entry : map.entrySet()) 。但其实Map遍历藏着多种玩法,有的优雅简洁,有的性能拉满,今天咱们盘一盘这些进阶偏基础的遍历方式,告别重复又臃肿的代码~
一、先搞懂:Map遍历的核心目标
遍历Map本质是获取「键(Key)」、「值(Value)」或「键值对(Entry)」,不同场景对应不同遍历方式,先上基础准备代码:
import java.util.HashMap;
import java.util.Map;
public class MapTraversalDemo {
public static void main(String[] args) {
Map<String, Integer> fruitPrice = new HashMap<>();
fruitPrice.put("苹果", 10);
fruitPrice.put("香蕉", 5);
http://www.chinasem.cn fruitPrice.put("橙子", 8);
// 各种遍历方式写在这里~
}
}
二、几种遍历方式的对比
1. 传统EntrySet遍历(最通用)
这是最基础也最常用的方式,支持同时获取键和值,兼容所有Java版本:
// 方式1:普通for循环+EntrySet for (Map.Entry<String, Integer> entry : fruitPrice.entrySe编程t()) { String key = entry.getKey(); Integer value = entry.getValue(); System.out.println(key + ":" + value + "元"); }
2. Lambda表达式遍历(Java 8+,极简)
Java 8引入的forEach+Lambda,一行代码搞定,告别冗余:
// 方式2:Lambda+forEach fruitPrice.forEach((key, value) -> System.out.println(key + ":" + value + "元"));
3. 只遍历Key/Value(按需选择)
如果只需要键或值,不用遍历EntrySet,直接针对性获取:
// 只遍历Key
for (String key : fruitPrice.keySet()) {
System.out.println("水果:" + key);
}
// 只遍历Value
for (Integer value : fruitPrice.values()) {
System.pythonout.println("价格:"编程 + value + "元");
}
4. 迭代器遍历(支持删除元素)
如果遍历过程中需要删除元素,迭代器是安全选择(fophpreach遍历删除会抛异常):
// 方式4:迭代器遍历(支持删除)
Iterator<Map.Entry<String, Integer>> iterator = fruitPrice.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<String, Integer> entry = iterator.next();
if (entry.getValue() < 8) {
iterator.remove(); // 安全删除价格低于8的水果
}
}
System.out.println("删除后的Map:" + fruitPrice);
三、避坑提醒
1. 遍历过程中修改Map(如put/remove):除了迭代器的remove方法,其他方式可能触发 ConcurrentModificationException ;
2. 性能优先级:EntrySet遍历 > 分别遍历Key+getValue(后者会重复查询Map);
3. Lambda遍历虽然简洁,但无法在内部使用break/continue终止遍历。
到此这篇关于Java中Map的五种遍历方式实现与对比的文章就介绍到这了,更多相关Java Map遍历内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程China编程(www.chinasem.cn)!
这篇关于Java中Map的五种遍历方式实现与对比的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!