java的hashmap遍历
时间: 2025-02-03 08:37:40 浏览: 45
### Java 中 HashMap 的遍历方法
#### 使用 `entrySet()` 方法遍历键值对
`entrySet()` 方法返回映射中包含的条目的集合视图。这是最常用的遍历方式之一,因为它允许同时访问键和值。
```java
Map<String, Integer> scores = new HashMap<>();
scores.put("Alice", 90);
scores.put("Bob", 80);
scores.put("Charlie", 70);
for (Map.Entry<String, Integer> entry : scores.entrySet()) {
String name = entry.getKey();
int score = entry.getValue();
System.out.println(name + ": " + score);
}
```
这种方法效率较高,因为只需要一次迭代即可获得键和值[^3]。
#### 使用 `keySet()` 和 `get()` 方法遍历
通过调用 `keySet()` 获取所有键的集合,再利用 `get()` 方法来取得对应于每个键的值。
```java
Map<String, Integer> map = new HashMap<>();
map.put("a", 1);
map.put("b", 2);
map.put("c", 3);
for (String key : map.keySet()) {
Integer value = map.get(key);
System.out.println("Key: " + key + ", Value: " + value);
}
```
这种方式虽然直观易懂,但在性能上不如直接操作 Entry 对象的方式好,因为在每次循环体内都会执行 get 操作[^2]。
#### 使用 `values()` 方法仅遍历值
如果只关心哈希表里的值而不涉及其关联的键,则可以采用此方法:
```java
Map<String, Integer> map = new HashMap<>();
// 假设已经填充了一些数据到map...
for (Integer value : map.values()) {
System.out.println(value);
}
```
这适用于不需要知道具体哪个键对应的场景下快速获取全部数值的情况。
#### 利用增强型 for 循环与 Lambda 表达式简化语法
自 JDK 8 起支持更简洁优雅的方式来完成相同的工作——借助 lambda 表达式的 Stream API:
```java
import java.util.stream.Collectors;
Map<String, Integer> scores = ... ; // 初始化你的HashMap实例
scores.forEach((k,v)->System.out.printf("%s:%d\n", k ,v));
```
上述代码片段展示了如何使用 `forEach` 接受一个 BiConsumer 参数来进行更加紧凑的一次性处理逻辑实现[^4]。
阅读全文
相关推荐


















