Java 中 Map 的 16 种遍历方式 及 性能对比

java 复制代码
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
}

Iterator<Map.Entry<Integer, Integer>> entries = map.entrySet().iterator();
while (entries.hasNext()) {
    entries.next();
}

map.forEach((key, value) -> {
});

map.entrySet().stream().forEach((entry) -> {
});

map.entrySet().parallelStream().forEach((entry) -> {
});
java 复制代码
for (Integer key : map.keySet()) {
}

Iterator<Integer> iteratorKeySet = map.keySet().iterator();
while (iteratorKeySet.hasNext()) {
    iteratorKeySet.next();
}

map.keySet().forEach((key) -> {
});

map.keySet().stream().forEach((entry) -> {
});

map.keySet().parallelStream().forEach((entry) -> {
});
java 复制代码
for (Integer value : map.values()) {
}

Iterator<Integer> iteratorValues = map.values().iterator();
while (iteratorValues.hasNext()) {
    iteratorValues.next();
}

map.values().forEach((values) -> {
});

map.values().stream().forEach((entry) -> {
});

map.values().parallelStream().forEach((value) -> {
});

for (Integer key : map.keySet()) {
    map.get(key);
}

性能比较

java 复制代码
每种循环各遍历50000000次 total cost time = 3996 ms

map.entrySet()                           : 348 ms, 8.71%
map.entrySet().iterator()                : 356 ms, 8.91%
map.forEach                              : 235 ms, 5.88%
map.entrySet().stream().forEach          : 227 ms, 5.68%
map.entrySet().parallelStream().forEach  : 116 ms, 2.90%
map.keySet()                             : 294 ms, 7.36%
map.keySet().iterator()                  : 301 ms, 7.53%
map.keySet().forEach                     : 226 ms, 5.66%
map.keySet().stream().forEach            : 227 ms, 5.68%
map.keySet().parallelStream().forEach    : 126 ms, 3.15%
map.values()                             : 301 ms, 7.53%
map.values().iterator()                  : 303 ms, 7.58%
map.values().forEach                     : 219 ms, 5.48%
map.values().stream().forEach            : 228 ms, 5.71%
map.values().parallelStream().forEach    : 122 ms, 3.05%
map.keySet() → map.get(key)              : 358 ms, 8.96%
相关推荐
njidf1 分钟前
Python日志记录(Logging)最佳实践
jvm·数据库·python
@我漫长的孤独流浪2 分钟前
Python编程核心知识点速览
开发语言·数据库·python
宇擎智脑科技3 分钟前
A2A Python SDK 源码架构解读:一个请求是如何被处理的
人工智能·python·架构·a2a
2401_851272994 分钟前
实战:用Python分析某电商销售数据
jvm·数据库·python
vx_biyesheji00016 分钟前
Python 全国城市租房洞察系统 Django框架 Requests爬虫 可视化 房子 房源 大数据 大模型 计算机毕业设计源码(建议收藏)✅
爬虫·python·机器学习·django·flask·课程设计·旅游
qq_416018729 分钟前
C++中的状态模式
开发语言·c++·算法
2401_8845632410 分钟前
模板代码生成工具
开发语言·c++·算法
code 小楊15 分钟前
yrb 1.5.0 正式发布:Python 极简国内下载加速与全景可视化终端体验!
开发语言·python
2401_8579182923 分钟前
用Python和Twilio构建短信通知系统
jvm·数据库·python
2401_8319207424 分钟前
C++代码国际化支持
开发语言·c++·算法