Rust HashMap概述1 - key與value集合
HashMap 1
是一個相當好用的工具
他可以對key(鍵)和value(值)操作
每個key對應一個value
跟其他語言的dictionary蠻像的
但還是有一點差別
Rust本身對於所有權和生命週期比較嚴謹
這篇會稍微介紹要如何使用Hashmap
會有其他篇介紹更詳細的用法
例子
假設我是一個學生
這學期有各種科目
包括英文、數學、國文
其中每個科目都有很多考試
希望把每個考試成績分類一下
可以透過Hashmap
直接透過程式看
稍微敘述一下程式在打什麼
先設定struce Score主要用來定義subject(科目)和score(分數)的型態
並透過impl Score存放數值
將每一科的科目名稱和分數存放在student_score變數中
創建一個名為score_map的變數,以HashMap存放資料
透過for迴圈將每個成績取出來
如果HashMap的key沒有該科目
會創建一個vec
並且將新的成績push進去
最後結果會長
這邊有幾個用到的方法
HashMap::new()[2]
創建一個HashMap
不用輸入其他東西
entry[3]
輸入key,輸出Entry
entry主要是根據key去修改value的值
or_insert[4]
self為Entry本身
回傳&'a mut
如果key沒有value值
可以輸入default當作初始value
如果有值就不會額外輸入default
因為回傳是&mut
也就是可以修改value值
進階題目
如果這次我有多位學生
每位學生都有數學英文國文三個科目
每個科目都有很多分數
並且希望額外知道國文的所有成績
該怎麼做?
get、get_key_value、HashMap的value又是一個HashMap的做法
參考資料
[1] https://doc.rust-lang.org/std/collections/struct.HashMap.html#
[2] https://doc.rust-lang.org/std/collections/struct.HashMap.html#method.new
[3] https://doc.rust-lang.org/std/collections/struct.HashMap.html#method.entry
[4] https://doc.rust-lang.org/std/collections/hash_map/enum.Entry.html#method.or_insert
[5] https://lageeblog.blogspot.com/2023/12/rust-hashmap-getgetkeyvaluehashmap.html
0 comments:
張貼留言