hashmap更新值的方式有两种:
- 直接插入,如果存在相同的key则覆盖
- 条件插入,如果key不存在则插入
hashmap不仅可以通过HashMap包直接创建,也可以通过Vector去创建
// 导入依赖包
use std::collections::HashMap;
fn main() {
// 常规:直接创建
let mut age_map: HashMap<String, i32> = HashMap::new();
age_map.insert(String::from("Jin"), 20);
age_map.insert(String::from("Micky"), 21);
// 直接插入,键存在的情况下直接覆盖
age_map.insert("Jin".to_string(), 18);
println!("map = {:?}", age_map);
// 键不存在的时候插入
age_map.entry("Tom".to_string()).or_insert(22);
age_map.entry("Jin".to_string()).or_insert(22);
println!("map = {:?}", age_map);
// 根据旧值更新
let text = "hello hi good hi";
let mut count_map: HashMap<&str, i32> = HashMap::new();
for world in text.split_whitespace() {
let count = count_map.entry(world).or_insert(0);
*count += 1;
}
println!("count = {:?}", count_map);
// *******通过Vector创建*********
// 分别定义一批key和一批value
let keys = vec!["Jin".to_string(), "Micky".to_string()];
let values = vec![20, 21];
let mut age_map: HashMap<_, _> = keys.iter().zip(values.iter()).collect();
println!("map = {:?}", age_map);
}