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 协议》,转载必须注明作者和本文链接
令狐一冲
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
文章
255
粉丝
119
喜欢
308
收藏
128
排名:335
访问:2.8 万
私信
所有博文
社区赞助商