HashMap 的 values() 方法返回所有值的 Collection 动态视图,与原 map 关联;可转为 ArrayList 或数组以支持索引等操作;遍历时非线程安全,建议并发时用 ConcurrentHashMap 或先复制。

Java 中 HashMap 获取所有值集合,用 values() 方法即可,它返回一个 Collection 视图。
直接调用 values() 方法
这是最常用的方式,返回的是 HashMap 中所有 value 的动态视图——底层与原 map 关联,修改 map 会影响该集合(反之不成立):
- Map
map = new HashMap(); - map.put("a", 1); map.put("b", 2); map.put("c", 3);
- Collection
values = map.values(); // 得到 [1, 2, 3](顺序不保证)
转成数组或 List(如需遍历或操作)
values() 返回的集合不支持随机访问,若需索引、排序或频繁遍历,建议转为 ArrayList 或数组:
- List
valueList = new ArrayList(map.values()); - Integer[] valueArray = map.values().toArray(new Integer[0]);
注意迭代时的线程安全与并发修改
values() 返回的集合是“弱一致性”的:
- 遍历时若其他线程修改了 map,可能抛出
ConcurrentModificationException(非并发 map); - 若需并发环境使用,建议用
ConcurrentHashMap,它的values()更安全,但依然不保证强一致性; - 如需完全隔离,可先复制: new ArrayList(map.values())。
和 keySet()、entrySet() 的区别
别混淆三者用途:
- keySet() → 所有 key 的 Set 视图;
-
entrySet() → 所有
Map.Entry的 Set 视图(适合需要键值对一起处理); - values() → 所有 value 的 Collection 视图(只关心值本身)。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











