Rust学习笔记_17——HashMap
Rust学习笔记_14——结构体
Rust学习笔记_15——Union
Rust学习笔记_16——Vector
HashMap
Rust 中的 HashMap
是一种非常有用的数据结构,它允许你存储键值对(key-value pairs),并且可以在常数时间内(O(1) 平均时间复杂度)根据键来查找对应的值。
HashMap
是 Rust 标准库的一部分,位于 std::collections
模块中。
1. 创建
// 引入HashMap类型
use std::collections::HashMap;
//创建HashMap实例
let mut map: HashMap<String, i32> = HashMap::new();
2. 插入数据
使用insert
方法向HashMap
中插入键值对
map.insert(String::from("one"), 1);
map.insert(String::from("two"), 2);
map.insert(String::from("three"), 3);
3. 访问
使用 get
方法可以根据键来访问对应的值。
get
方法返回一个 Option<&V>
类型的值,这反映了 Rust 的所有权系统和可能的键不存在的情况
let value = map.get(&String::from("one"));
match value {
Some(v) => println!("Found value: {}", v),
None => println!("Key not found"),
}
4. 更新
entry
方法提供了一种更高效的方式来更新 HashMap
中的值,因为它避免了多次哈希查找。
entry
方法返回一个 Entry
枚举,它有两个变体:Occupied
和 Vacant
match map.entry(String::from("one")) {
Entry::Occupied(e) => {
e.into_mut().push(1); // 假设值是 Vec<i32> 类型,更新值
}
Entry::Vacant(e) => {
e.insert(1); // 插入新值
}
}
5. 遍历
使用迭代器来遍历HashMap
中的键值对
for (key, value) in &map {
println!("Key: {}, Value: {}", key, value);
}
6. 移除
map.remove(&String::from("two"));
7. 注意
HashMap
的键必须实现 Eq
和 Hash
trait,因为 HashMap
需要根据键的哈希值来存储和查找值。
默认情况下,Rust 的标准库类型如 String
、i32
等已经实现了这些 trait。
8. 示例
use std::collections::HashMap;
fn main() {
let mut map: HashMap<String, i32> = HashMap::new();
// 插入键值对
map.insert(String::from("one"), 1);
map.insert(String::from("two"), 2);
map.insert(String::from("three"), 3);
// 访问值
match map.get(&String::from("one")) {
Some(v) => println!("Found value: {}", v),
None => println!("Key not found"),
}
// 更新值
map.entry(String::from("two")).or_insert(50); // 如果键不存在,则插入 50
原文地址:https://blog.csdn.net/LuckyLay/article/details/144334411
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!