Rust 编程视频教程对应讲解内容-HashMap
视频地址
头条地址:https://www.ixigua.com/i676544267458235648...
B站地址:https://www.bilibili.com/video/av78062009?...
网易云课堂地址:https://study.163.com/course/introduction....
讲解内容
1、哈希map
(1)Hash Map<K, V>类型存储了一个键值K,对应一个值类型V的映射。它通过一个哈希函数来实现映射,决定如何将键和值放入内存中。
(2)所有键必须是同一个类型,所有的值也必须是同一个类型。
2、创建一个哈希map
(1)常用创建方法
use std::collections::HashMap;
fn main() {
let mut scores = HashMap::new();
scores.insert(String::from("Blue"), 10);
scores.insert(String::from("Red"), 20);
}
(2)通过vector的collect方法创建(考虑不讲)
use std::collections::HashMap;
let keys = vec![String::from("Blue"), String::from("Yellow")];
let values = vec![10, 20];
let scores: HashMap<_, _> = keys.iter().zip(values.iter()).collect(); //注意:下划线为占位作用
3、读取元素
use std::collections::HashMap;
let ss = HashMap::new();
ss.insert(String::from("Blue"), 10);
ss.insert(String::from("Yellow"), 20);
//读取元素
let key = String::from("Blue");
let value = ss.get(&key); //value = 10
4、遍历
let ss = HashMap::new();
ss.insert(String::from("Blue"), 10);
ss.insert(String::from("Yellow"), 20);
//遍历:会以任意的顺序打印出每一个键值对
for (key, value) in &ss {
println!("{}: {}", key, value);
}
5、更新值
(1)插入值
let mut ss = HashMap::new();
ss.insert(String::from("Blue"), 10);
ss.insert(String::from("Blue"), 20);//会将之前Blue对应的值覆盖掉
println!("{:?}", ss);//会打印{“Blue”: 20}
(2)只在键值没有对应的值时插入
let mut ss = HashMap::new();
ss.insert(String::from("Blue"), 10);
ss.entry(String::from("Yellow")).or_insert(20);
ss.entry(String::from("Blue")).or_insert(20);
println!("{:?}", ss);//会打印{“Blue”: 10} {“Yellow”: 10}
(3)根据旧值更新一个值
let text = "hello world wonderful world";
let mut map = HashMap::new();
for word in text.split_whitespace() {
let count = map.entry(word).or_insert(0);
*count += 1;
}
println!("{:?}", map);
本作品采用《CC 协议》,转载必须注明作者和本文链接