1. for
循环直接迭代
- 方法:可以直接使用
for
循环对 HashMap
进行迭代,默认会迭代出 (Key, Value)
对。
- 示例:
use std::collections::HashMap;
fn main() {
let mut map = HashMap::new();
map.insert("a", 1);
map.insert("b", 2);
for (key, value) in &map {
println!("Key: {}, Value: {}", key, value);
}
}
- 适用场景:当需要同时获取键值对进行处理,比如打印键值对信息,或者基于键值对做一些通用的计算操作时,这种方式很方便。
2. 迭代键(.keys()
)
- 方法:使用
keys()
方法可以迭代出 HashMap
中的所有键。
- 示例:
use std::collections::HashMap;
fn main() {
let mut map = HashMap::new();
map.insert("a", 1);
map.insert("b", 2);
for key in map.keys() {
println!("Key: {}", key);
}
}
- 适用场景:当仅需要处理
HashMap
中的键,比如检查某些键是否存在,或者基于键做一些独立于值的操作时,使用这种方式。
3. 迭代值(.values()
)
- 方法:使用
values()
方法可以迭代出 HashMap
中的所有值。
- 示例:
use std::collections::HashMap;
fn main() {
let mut map = HashMap::new();
map.insert("a", 1);
map.insert("b", 2);
for value in map.values() {
println!("Value: {}", value);
}
}
- 适用场景:当只关心
HashMap
中的值,比如统计所有值的总和,或者对所有值进行某种统一的转换操作时,这种迭代方式比较合适。
4. 可改变值的迭代(.values_mut()
)
- 方法:使用
values_mut()
方法可以迭代出可变的 HashMap
值,允许对值进行修改。
- 示例:
use std::collections::HashMap;
fn main() {
let mut map = HashMap::new();
map.insert("a", 1);
map.insert("b", 2);
for value in map.values_mut() {
*value += 1;
}
for (key, value) in &map {
println!("Key: {}, Value: {}", key, value);
}
}
- 适用场景:当需要直接修改
HashMap
中的值时,比如根据一定条件对值进行更新操作,就可以使用这种迭代方式。