Rust从入门到放弃——HashMap和BTreeMap

本文介绍了HashMap和BTreeMap两种数据结构在存储、查找、排序特性和使用示例上的区别。HashMap适合快速查找,无序,而BTreeMap则是有序的,适合需要排序的场景。示例展示了如何在Rust中声明、访问、遍历和更新HashMap,以及利用HashMap进行字符串计数操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

1.HashMap和BTreeMap都是通过键值对来存储数据,一个Key对应一个Value,同构。
2.HashMap和BTreeMap是通过键值(任何类型)来查找数据,而不是通过索引,键值是唯一的存在。
3.HashMap的key是可哈希,BTreeMap的key 可排序,HashMap无序,BTreeMap有序。
4.HashMap和BTreeMap的数据存储在堆内存中。

示例

声明

	//声明与赋值
    let mut hash_map = HashMap::new();
    //let mut hash:HashMap<String,u32> = HashMap::new();
    hash_map.insert(String::from("Red"), 10);
    hash_map.insert(String::from("Blue"), 225);

collect方法合成

    let teams = vec![String::from("R"),String::from("G"),String::from("B"),String::from("A")];
    let intial = vec![20,100,255,127];
    //合成一个hashmap
    let map:HashMap<_,_> = teams.iter().zip(intial.iter()).collect();

访问

	//访问
    let color = String::from("B");
    let value = map.get(&color);
    match value {
        Some(s) => println!("{}",s),
        None => println!("Not value"),
    };

遍历

  //遍历
    for (k,v) in &map
    {
        println!("{} - {} ", k,v);
    }

更新HashMap中的数据, 替换现有的值, 保留再有的值,忽略新的值,合并现有的值和新的值。

	//更新
     hash_map.insert(String::from("Red"), 222);
     println!("{:?}",hash_map);

     //判断是否存在再插入,存在则不插入
     hash_map.entry(String::from("Red")).or_insert(50);
     hash_map.entry(String::from("Yellow")).or_insert(100);
     println!("{:?}",hash_map);

     let text = "hello world woderful world";
     let mut map = HashMap::new();

     for word in text.split_whitespace()
     {
         let count = map.entry(word).or_insert(0);
         *count += 1;
     }

     println!("{:#?}",map);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知来者逆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值