Rust 入門 - HashMap

導(dǎo)入庫(kù)

use std::collections::HashMap;

使用

let mut scores = HashMap::new();
scores.insert("bad".to_string(), 10);
scores.insert("googd".to_string(), 100);
println!("scores = {:#?}", scores);

vector 和 hashmap 數(shù)據(jù)都在堆上

用隊(duì)伍列表和分?jǐn)?shù)列表創(chuàng)建哈希 map

let teams = vec!["blue".to_string(), "red".to_string()];
let scores = vec![10, 50];
let res: HashMap<_, _> = teams.iter().zip(scores.iter()).collect();
println!("res = {:#?}", res);

哈希 map 和所有權(quán)

對(duì)于像 i32 這樣的實(shí)現(xiàn)了 Copy trait 的類型,其值可以拷貝進(jìn)哈希 map。對(duì)于像 String 這樣擁有所有權(quán)的值,其值將被移動(dòng)而哈希 map 會(huì)成為這些值的所有者

let s1 = "hello".to_string();
let s2 = "world".to_string();
let mut map = HashMap::new();
map.insert(s1, s2);
// println!("s1 = {}, s2= {}", s1, s2); 被借用
println!("map = {:#?}", map);

訪問(wèn)哈希 map 中的值

let mut res = HashMap::new();
res.insert("good".to_string(), 100);
res.insert("bad".to_string(), 10);
let k = "good".to_string();
let v = res.get(&k);
match v {
    Some(value) => println!("value = {}", value),
    None => println!("none"),
}

for (key, value) in &res {
    println!("{}: {}", key, value);
}

只在鍵沒(méi)有對(duì)應(yīng)值時(shí)插入

let mut scores = HashMap::new();
scores.insert("b".to_string(), 100);
scores.entry("b".to_string()).or_insert(10);
scores.entry("r".to_string()).or_insert(90);
println!("scores = {:#?}", scores);

根據(jù)舊值更新一個(gè)值

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 = {:#?}", map);
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 通用編程概念 變量與可變性 變量默認(rèn)不可變,如需要改變,可在變量名前加 mut 使其可變。例如:let mut a...
    soojade閱讀 12,740評(píng)論 2 30
  • 變量 聲明變量關(guān)鍵字:let 變量值分為兩種類型: 可變的(mut) 不可變 變量類型: 布爾型 - bool 表...
    JennerHua閱讀 1,165評(píng)論 0 4
  • 緣起 實(shí)踐出真知快速獲取澄清概念OwnershipMoveReferenceMutable reference解釋...
    lambeta閱讀 11,226評(píng)論 2 19
  • Ownership Rust 中的每一個(gè)值都有一個(gè)被稱為其 所有者(owner)的變量。值在任一時(shí)刻有且只有一個(gè)所...
    Lee_dev閱讀 768評(píng)論 0 0
  • 簡(jiǎn)介 接上回書 什么叫HashMap HashMap實(shí)際上就是通過(guò)鍵值對(duì)的形式存儲(chǔ)的堆。 創(chuàng)建 HashMap 創(chuàng)...
    kami1983閱讀 7,920評(píng)論 0 1

友情鏈接更多精彩內(nèi)容