课程 278 / 365
76%
数据结构与算法直觉·练习·18 分钟
正文已完成

为课程进度设计列表与映射模型

把真实需求落成一份含顺序、索引、更新规则和异常处理的数据模型。

L278

可用的数据模型需要定义列表保存什么、映射的键和值是什么、二者如何同步,以及缺失或重复数据怎样处理。一句“用 Map”还不足以指导实现。

这一课的结果

能为同时需要有序展示与按 ID 更新的场景交付一份可实现的数据结构方案。

核心概念

先把关键判断说清楚

01

单一事实来源

同一字段不要在多个结构里独立维护;否则一次更新可能留下互相矛盾的值。

02

索引可以重建

列表是事实集合时,按 ID 的映射可以由列表生成;可重建索引不应被当成第二份业务事实。

03

异常规则属于模型

重复 ID、未知 ID 和删除后的引用必须在方案里明确,而不是留给实现者临场猜测。

案例拆解

365 节课程的本地进度模型

课程目录按固定顺序展示,但浏览器进度会凭课程 ID 单独写入并读取。

  1. 01

    课程蓝图用有序列表保存 ID、标题和篇章顺序。

  2. 02

    进度用课程 ID 到状态记录的映射保存,不复制课程标题。

  3. 03

    渲染时遍历课程列表并读取映射;未知进度 ID 被隔离并记录,而不是插入目录。

案例结果

课程结构保持稳定,进度可独立更新,旧数据也不会改变目录事实。

提交前练习

现在轮到你

设计一个同时支持顺序浏览和按 ID 更新的数据模型。

内容会自动保存在当前设备
查看参考答案与评分标准

参考答案

项目列表保存项目 ID 的显示顺序;项目详情映射以 ID 为键保存唯一对象;排序只改 ID 列表,详情更新只改映射;重复 ID 拒绝写入,未知 ID 显示缺失占位并记录。

评分标准

  • 列表和映射职责不重叠
  • 同步规则覆盖增删改
  • 异常输入有显式处理

本课收口 · 学习证据

完成,不等于随手打一个勾。

确认阅读、保存练习,再用 30 秒检查和一句话总结留下真实学习证据。

0 / 3
02完成本课练习0 / 4 项必填内容已填写
03通过理解检查约 30 秒
列表与映射并存时,哪种做法最能避免状态冲突?
你现在更接近哪一种状态?
完成上面三项后,才能把本课记为已验证。

资料来源

继续核对与延伸阅读

本课内容最近更新于