新闻详情

新闻详情

首页 / 资讯中心 / 详情

【Rust入门知识点学与练】第11课:HashMap 键值对集合

发布时间:2026/9/11 18:15:32来源:尧图网络
【Rust入门知识点学与练】第11课:HashMap 键值对集合
知识点HashMap — 存储键值对HashMap 需要先导入usestd::collections::HashMap;fnmain(){// 创建空的 HashMapletmutscores:HashMapString,i32HashMap::new();// 插入键值对scores.insert(String::from(小明),95);scores.insert(String::from(小红),88);scores.insert(String::from(小刚),72);println!({:?},scores);// 通过键访问值返回 Optionmatchscores.get(小明){Some(score)println!(小明的分数: {},score),Noneprintln!(没找到),}// 用方括号访问键不存在会 panic慎用println!(小红的分数: {},scores[小红]);// 遍历所有键值对for(name,score)inscores{println!({}: {}分,name,score);}// 检查是否包含某个键println!(包含小刚? {},scores.contains_key(小刚));// true// 删除键值对scores.remove(小刚);println!(删除后: {:?},scores);// 更新值如果键已存在则覆盖scores.insert(String::from(小明),100);println!(更新后小明: {},scores[小明]);// 用 entry API只在键不存在时插入scores.entry(String::from(小李)).or_insert(60);println!(插入小李后: {:?},scores);}核心规则操作 写法创建 HashMap::new()插入 map.insert(key, value)访问 map.get(key) → OptionV包含 map.contains_key(key)删除 map.remove(key)遍历 for (k, v) in map { … }不存在才插入 map.entry(key).or_insert(value)动手试试补全下面的代码usestd::collections::HashMap;fnmain(){// 补全创建一个 HashMap存储以下学生成绩// 语文 - 85, 数学 - 92, 英语 - 78// 然后打印整个 HashMap// 期望输出: {语文: 85, 数学: 92, 英语: 78}顺序可能不同// 补全用 get 获取数学的成绩用 match 打印// 期望输出: 数学成绩: 92// 补全用 for 循环遍历 HashMap计算所有科目的总分并打印// 期望输出: 总分: 255// 补全用 entry API如果体育不存在则插入 88// 打印整个 HashMap// 期望输出包含: 体育: 88// 补全删除英语然后打印 HashMap// 期望输出: {语文: 85, 数学: 92, 体育: 88}顺序可能不同}期望输出{“语文”: 85, “数学”: 92, “英语”: 78}数学成绩: 92总分: 255{“语文”: 85, “数学”: 92, “英语”: 78, “体育”: 88}{“语文”: 85, “数学”: 92, “体育”: 88}写好了贴过来没问题就进入第12课结构体 Struct 贴代码usestd::collections::HashMap;fnmain(){// 补全创建一个 HashMap存储以下学生成绩// 语文 - 85, 数学 - 92, 英语 - 78// 然后打印整个 HashMap// 期望输出: {语文: 85, 数学: 92, 英语: 78}顺序可能不同letmutscoresHashMap::new();scores.insert(语文,85);scores.insert(数学,92);scores.insert(英语,78);println!({:?},scores);// 补全用 get 获取数学的成绩用 match 打印// 期望输出: 数学成绩: 92matchscores.get(数学){Some(v)println!(数学成绩: {},v),Noneprintln!(没有数学成绩),}// 补全用 for 循环遍历 HashMap计算所有科目的总分并打印// 期望输出: 总分: 255letmuttotal0;for(_subject,score)inscores{totalscore;}println!(总分: {},total);// 补全用 entry API如果体育不存在则插入 88// 打印整个 HashMap// 期望输出包含: 体育: 88scores.entry(体育).or_insert(88);println!({:?},scores);// 补全删除英语然后打印 HashMap// 期望输出: {语文: 85, 数学: 92, 体育: 88}顺序可能不同scores.remove(英语);println!({:?},scores);}运行示例HashMap无序键的先后顺序每次运行不一定一样plaintext{“语文”: 85, “数学”: 92, “英语”: 78}数学成绩: 92总分: 255{“语文”: 85, “数学”: 92, “英语”: 78, “体育”: 88}{“语文”: 85, “数学”: 92, “体育”: 88}HashMap核心知识点HashMap::new() 创建空哈希map增删改需要 mut。map.insert(键, 值) 插入/覆盖一条记录。map.get(键) → 返回 OptionV 配合 match 判断有无数据。遍历 for (k,v) in map 借用遍历不会拿走所有权。entry(键).or_insert(默认值) entry经典用法键不存在才插入存在就什么也不干。map.remove(键) 删除指定键‑值对。⚠️HashMap 无序输出顺序不固定不要像数组一样依赖索引顺序对比 Python dictHashMap ≈ Python 的字典dict功能非常接近。完成HashMap 基础过关可以开启下一课。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

PyTorch torch.signal.windows 窗函数完全指南:从 Bartlett 到 Kaiser 的频谱分析工具详解 2026/9/11 19:03:40

PyTorch torch.signal.windows 窗函数完全指南:从 Bartlett 到 Kaiser 的频谱分析工具详解

PyTorch torch.signal.windows 窗函数完全指南:从 Bartlett 到 Kaiser 的频谱分析工具详解 【免费下载链接】pytorch Tensors and Dynamic neural networks in Python with strong GPU acceleration 项目地址: https://gitcode.com/GitHub_Trending/py/pytorch …

阅读更多 →
Revit二次开发实战:用DWGExportOptions与IExternalApplication实现一键批量导出DWG 2026/9/11 19:03:40

Revit二次开发实战:用DWGExportOptions与IExternalApplication实现一键批量导出DWG

简介:面向Revit二次开发工程师的示例工程,围绕DWGExportOptions类演示了在外部应用中自定义DWG导出参数、并批量出图的完整流程。资源将C#源码、界面资源和Addin配置文件整合为一套可加载的外部应用,适合需要掌握Revit API、处理模型导出任务…

阅读更多 →
大一电赛实战指南:从电路图到稳定运行的工程落地 2026/9/11 19:03:40

大一电赛实战指南:从电路图到稳定运行的工程落地

1. 这不是“打比赛”,是大一学生第一次把课本电路图焊在板子上的实感“大一打电赛心得”——这六个字背后,藏着一群刚结束高数期末、连示波器触发旋钮往哪调都得翻说明书的新生,在暑假里熬掉三包咖啡、烧糊两块PCB、被队友指着万用表骂“你测…

阅读更多 →
C++与Node.js集成:高性能计算与高并发I/O的完美结合 2026/9/11 19:03:40

C++与Node.js集成:高性能计算与高并发I/O的完美结合

1. 为什么需要C与Node.js集成?在当今的软件开发领域,C和Node.js各自占据着不可替代的位置。C以其高性能和系统级访问能力著称,而Node.js则凭借其事件驱动、非阻塞I/O模型成为构建高效网络应用的利器。将两者集成可以发挥各自的优势&#xff1…

阅读更多 →
素数判断算法优化:从暴力法到埃氏筛的实战解析 2026/9/11 19:03:40

素数判断算法优化:从暴力法到埃氏筛的实战解析

1. 题目背景与核心需求 这道来自厦门大学的机试题"非素数个数"看似简单,却暗藏玄机。作为计算机专业学生必须掌握的经典题型,它考察的是对素数判断算法的理解与优化能力。题目要求:给定一个整数n,统计小于n的所有非素数…

阅读更多 →
9Router 本地部署完全指南:安装、启动、配置与故障排查 2026/9/11 19:00:40

9Router 本地部署完全指南:安装、启动、配置与故障排查

9Router 本地部署完全指南:安装、启动、配置与故障排查 【免费下载链接】9router Unlimited FREE AI coding. Connect Claude Code, Codex, Cursor, Cline, Copilot, Antigravity to FREE Claude/GPT/Gemini via 40 providers. Auto-fallback, RTK -40% tokens, nev…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞