rust hashmap使用总结

16 篇文章 0 订阅
5 篇文章 0 订阅

https://blog.csdn.net/wowotuo/article/details/74779709

use std::collections::HashMap;

fn hashmap_test() {
    let mut contacts = HashMap::new();
    for i in 1..10 {
        contacts.insert(i, (i * 100).to_string());
    }
    contacts.insert(2, "222".to_string()); //overwrite <2, "200">
    contacts.remove(&3);

    contacts.entry(10).or_insert("7777".to_string()); // 如果contacts中没有key为10,则插入<10, 7777>;如果有key 10,则不插入,直接跳过;

    let len = contacts.len();
    let if_contain_key = contacts.contains_key(&1);
    let value = contacts.get(&6);

    let keys = contacts.keys();
    println!("keys:{:?}", keys); 
    let values = contacts.values();
    println!("values :{:?}", values);

    let value_key = contacts.get(&1).unwrap().clone();
    println!("value_key :{:?}", value_key);

    for (key, value) in contacts {
        println!("key {}, value {}", key, value);
    }

    let mut hash_vec: HashMap<u32, Vec<&str>> = HashMap::new();
    //对于HashMap<u32, Vec<&str>>类型,要对最里面Vec<&str>进行增加元素的操作(假设里面有“5”key),可以:
    hash_vec.get_mut(&5).unwrap().push("value_5");

    let mut hash_map_tmp = HashMap::new();
    hash_map_tmp.insert(1, "value 1");//强制插入,已有key 1,则更新value为value 1;
    hash_map_tmp.entry(1).or_insert("value 2");//有key 1,不更新;没有key 1,插入 1, value 2

    //HashMap =>Vec
    let vec: Vec<(_, _)> = hash_map_tmp.into_iter().collect();
    println!("vec :{:?}", vec);

    let teams = vec![
        "AAA".to_string(),
        "BBB".to_string(),
        "CCC".to_string(),
    ];
    let socres = vec![10, 20, 30];
    let hash_map_scores: HashMap<_, _> = teams.iter().zip(socres.iter()).collect();

    {
        //统计单词个数
        let text = "aaa bbb ccc ddd aaa";
        let mut hmp = HashMap::new();
        for world in text.split_whitespace() {
            let count = hmp.entry(world).or_insert(0);
            *count += 1;
        }
    }
    
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值