[rust]HashMap

232 阅读1分钟

hashmap更新值的方式有两种:

  1. 直接插入,如果存在相同的key则覆盖
  2. 条件插入,如果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);
}