頭條地址: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 協議》,轉載必須註明作者和本文連結