最直接方式是调用map.values()获取Collection<V>视图,再用增强for循环、迭代器或Stream处理;values()返回视图,修改会同步影响原Map,但不支持add()/clear(),且遍历顺序不保证。

Java 中遍历 HashMap 的所有 value,最直接的方式是调用 map.values() 获取一个 Collection<V> 视图,然后用增强 for 循环、迭代器或 Stream 处理。
使用增强 for 循环(最常用)
简洁清晰,适合大多数场景:
HashMap<String, Integer> map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
for (Integer value : map.values()) {
System.out.println(value);
}
// 输出:1 2 3(顺序不保证)
使用迭代器(需要手动控制)
适合需在遍历时删除元素等操作(注意:只能用 Iterator.remove() 安全删除):
- 调用
map.values().iterator()获取迭代器 - 用
hasNext()和next()遍历 - 若要删除当前 value 对应的键值对,必须通过
iterator.remove(),不能直接调用map.remove()
使用 Stream API(JDK 8+,支持函数式操作)
适合需要过滤、映射、聚合等操作的场景:
立即学习“Java免费学习笔记(深入)”;
long count = map.values().stream()
.filter(v -> v > 1)
.count();
map.values().stream()
.map(String::valueOf)
.forEach(System.out::println);
注意事项
values() 返回的是视图,不是副本:对返回的 Collection 做 remove() 操作会同步反映到原 HashMap(但不支持 add() 或 clear());
不保证顺序:HashMap 本身无序,如需有序遍历 value,请先转为 TreeMap 或按 key 排序后取 value;
线程不安全:多线程环境下遍历前建议加锁或使用 ConcurrentHashMap。


















