欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > Rust HashMap使用

Rust HashMap使用

2026/5/6 15:27:54 来源:https://blog.csdn.net/qq_35496811/article/details/144359955  浏览:    关键词:Rust HashMap使用

 Rust 的 HashMap 是一个功能强大的数据结构,它结合了哈希表的高效性和 Rust 编程语言的内存安全特性。通过提供常数时间复杂度的查找、插入和删除操作,以及丰富的 API,它在许多实际应用中都非常有用。

示例代码:

use std::collections::HashMap;fn main() {let mut map = HashMap::new();// 重复插入会直接被后者覆盖map.insert(String::from("Tom"), String::from("11111"));map.insert(String::from("Tom"), String::from("cat"));map.insert(String::from("Sam"), String::from("cat"));map.insert(String::from("David"), String::from("cat"));map.insert(String::from("John"), String::from("cat"));// 删除单个元素let del = map.remove(&String::from("David")).unwrap();println!("del={:?}", del);// 存在则修改,不存在则插入map.entry("Tom".to_string()).and_modify(|v| {v.push_str(" and mouse");}).or_insert("cat".to_string());// 不存在则插入map.entry("Sam".to_string()).or_insert(String::from("cat"));// 获取单个元素let m1 = &map["Tom"];println!("m1={:?}", m1);println!("Tom={:?}", map.get(&String::from("Tom")).clone().unwrap());println!("map={:?},is_empty={}", map, map.is_empty());// 清空map.clear();println!("map={:?},is_empty={}", map, map.is_empty());// 元祖vec转maplet vec = vec![("key1", "value2"), ("key2", "value2")];let map: HashMap<&str, &str> = vec.into_iter().collect();println!("map={:?}", map);// 合并两个vec成maplet keys = vec![String::from("blue"), String::from("red")];let v1 = vec![1, 2];let m1: HashMap<_, _> = keys.iter().zip(v1.iter()).collect();for i in m1.iter() {println!("{:?}", i);}for (k, v) in m1.iter() {println!("{},{}", k, v);}// 基于原有的key值进行更新,统计单词个数let text = "hello world wonderful world hello rust";let mut map = HashMap::new();for word in text.split_whitespace() {let count = map.entry(word).or_insert(0);*count += 1;}println!("{:?}", map);// 以vec形式统计每个字母出现位置let mut map = HashMap::new();for (i, c) in "hello!".chars().enumerate() {map.entry(c).or_insert(Vec::new()).push(i);}// 累加l出现的位置坐标let mut sum = 0;for i in map.get(&'l').unwrap() {sum += i;}println!("sum={sum},map={map:?}");
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词