面试题答案
一键面试代码实现
use std::collections::HashMap;
fn main() {
let mut cache: HashMap<String, String> = HashMap::new();
// 存入数据到缓存
let key = String::from("key1");
let value = String::from("value1");
cache.insert(key.clone(), value.clone());
// 从缓存中获取数据
match cache.get(&key) {
Some(v) => println!("从缓存中获取到的值: {}", v),
None => println!("缓存中未找到对应的值"),
}
}
可能遇到的错误及处理
- 类型不匹配错误:
- 描述:如果在插入或获取数据时,提供的键或值的类型与
HashMap
中定义的类型不匹配,会导致编译错误。 - 处理:确保所有插入和获取操作使用的键值对类型与
HashMap
声明的类型一致,如上述代码中均使用String
类型。
- 描述:如果在插入或获取数据时,提供的键或值的类型与
- 键不存在错误:
- 描述:当使用
get
方法获取数据时,如果键不存在,get
方法会返回None
。 - 处理:如上述代码中,使用
match
语句对get
方法的返回值进行处理,当返回None
时,进行相应的提示,告知用户缓存中未找到对应的值。还可以使用get_or_insert
方法,当键不存在时插入默认值并返回值。例如:
- 描述:当使用
let value = cache.get_or_insert(String::from("key2"), String::from("default_value"));
println!("获取到的值: {}", value);
这样,若key2
不存在,会插入默认值并返回该值。