/* 映射表
*/
use std::collections::HashMap;
fn test_1() {
println!("-------------------------test_1-------------------------");
let mut map = HashMap::new(); //这里没有声明散列表的泛型,是因为 Rust 的自动判断类型机制。
map.insert("color", "red");
map.insert("size", "10 m^2");
println!("{}", map.get("color").unwrap());
//这种用法必须保证key必须存在,否则直接panic
println!("{}", map["color"]);
//支持迭代器
for i in &map {
println!("{}->{}", i.0, i.1);
}
for i in map.iter() {
println!("{:?}", i);
println!("{:?}------>>>>>>>{:?}", i.0,i.1);
}
//移除
map.remove("size");
//支持迭代器
for i in &map {
println!("{}->{}", i.0, i.1);
}
}
//当使用 insert 方法添加新的键值对的时候,如果已经存在相同的键,会直接覆盖对应的值
//如果你想"安全地插入",就是在确认当前不存在某个键时才执行的插入动作,
fn test_2() {
println!("-------------------------test_2-------------------------");
let mut map = HashMap::new();
map.insert("color", "red");
map.insert("size", "10 m^2");
map.entry("color").or_insert("red"); //这句话的意思是如果没有键为 "color" 的键值对就添加它并设定值为 "red",否则将跳过。
}
//在已经确定有某个键的情况下如果想直接修改对应的值,有更快的办法:
fn test_3() {
println!("-------------------------test_3-------------------------");
let mut map = HashMap::new();
map.insert("color", "red");
if let Some(x) = map.get_mut(&"color2") {
*x = "green";
}
if HashMap::contains_key(&map, "color2"){
println!("contain key color");
} else {
println!("not contain key color2");
}
//这种直接赋值的方式则不可以
//map["color"]="yello";
for i in map.iter() {
println!("{:?}", i);
}
}
fn main() {
test_1();
test_2();
test_3();
}
12.映射表map.rs
猜你喜欢
转载自blog.csdn.net/liujiayu2/article/details/114387142
今日推荐
周排行