Rust 程式設計視訊教程對應講解內容-HashMap

linghuyichong發表於2020-01-01

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

令狐一衝

相關文章