Java HashMap初始化写法对应的Rust等价实现方案
Rust 等效实现 Java HashMap 初始化的方案
Rust 标准库的 HashMap 位于 std::collections 模块下,对应给出的Java代码逻辑,有两种常用实现方式。
与原Java逐行逻辑完全对应的写法
这种写法和Java创建空Map后逐个put键值对的逻辑完全对齐,适配从Java转过来的开发习惯:
use std::collections::HashMap; fn main() { // 对应Java中创建空HashMap的逻辑 let mut map = HashMap::new(); // 逐个插入键值对,vec![]宏对应Java的Arrays.asList()快速生成列表 map.insert("1", vec!["one"]); map.insert("2", vec!["two", "three"]); map.insert("3", vec!["four", "five", "six"]); }
核心逻辑对应关系:
HashMap::new()等价于Java的new HashMap<String, List<String>>(),Rust会自动根据后续插入的键值对推导类型,不需要手动写泛型参数insert(key, value)方法等价于Java Map的put方法vec![]是Rust提供的快速创建动态数组的宏,使用体验和Java的Arrays.asList()一致;示例中使用的是字符串字面量,实际类型为HashMap<&str, Vec<&str>>,如果需要获得持有字符串所有权的效果(和Java String对象行为一致),可以将值转为String类型,例如vec!["one".to_string()]
Rust 风格的批量初始化写法
如果初始化后不需要频繁新增顶层键值对,可以直接通过键值对列表批量创建HashMap,不需要声明为可变变量,写法更简洁:
use std::collections::HashMap; fn main() { let map = HashMap::from([ ("1", vec!["one"]), ("2", vec!["two", "three"]), ("3", vec!["four", "five", "six"]), ]); }
两种写法生成的HashMap使用方式完全一致,后续如果需要修改内部列表的元素,通过get_mut获取可变引用即可操作,和Java中调用get拿到列表后调用add方法的逻辑一致。
内容的提问来源于stack exchange,提问作者ryan_k22
相关产品推荐
相关产品推荐

