HashMap

HashMap

fn main() {
    let mut m1 = HashMap::new();

    m1.insert("语文", 99);
    m1.insert("数学", 80);
    m1.insert("英语", 60);

    println!("m1: {:?}, capacity:{}", m1, m1.capacity());

    // 预设容量 避免频繁的内存分配和拷贝,提升性能
    let m2 = HashMap::<&str, u8>::with_capacity(100);
    println!("m2: {:?}, capacity:{}", m2, m2.capacity());

    // 将动态数组转为hashMap
    let v1 = vec![
        ("语文", 70),
        ("数学", 99),
        ("英语", 80)
    ];
    let mut m3 = v1.into_iter().collect::<HashMap<&str, u8>>();
    println!("m3: {:?}", m3);

    // 获取值
    let m3_1 = m3.get("语文"); // 若没获取到返回None
    println!("[1]: m3: {:?}, m3_1: {:?}", m3, m3_1);

    // 覆盖值
    m3.insert("语文", 20);
    println!("[2]: m3: {:?}", m3);

    // 如果不存在则插入,如果存在则不插入
    m3.entry("物理").or_insert(100); // 成功插入
    m3.entry("语文").or_insert(100); // 语文已存在 不插入

    println!("[3]: m3: {:?}", m3);

}