汇总 · 八种结构一张决策表
数组/栈/队列/哈希表/缓存/树/图/向量各自的强项弱项与 AI 里的真身;点选场景,看该用哪种收纳方式
本页解决的问题
先给结论「汇总 · 八种结构一张决策表」要解决的关键问题是什么?
数组/栈/队列/哈希表/缓存/树/图/向量各自的强项弱项与 AI 里的真身;点选场景,看该用哪种收纳方式
让这个结论先证明自己值得留下。 把这一页当成决策工具,而不是需要背下来的定义。把概念连到一个真实任务、一个可观察结果,以及一个能改变你判断的失败上。
写下一个问题:试完这个方法后,你能用什么证据回答它?
结论听起来很完整,却没有检查最关键的假设。
每行一种结构:一句话口诀、最亮的强项、最疼的弱项、它在 AI 世界的真身、哪一课讲的。留意「弱项」那一列——选错结构的代价,全写在那里。
| 结构 | 一句话口诀 | 强项 | 弱项 | AI 里的真身 | 出处 |
|---|---|---|---|---|---|
| 📚数组 | 排排坐,按号找 | 按位置直达、末尾追加快 | 中间插入 / 删除要全体挪位 | message list:你和 AI 的每句对话都躺在里面 | 第 2 课 |
| 🥞栈 | 后进先出 | 撤销、回溯、原路返回 | 只能动最上面那一个 | Cmd+Z、函数调用、Agent 的子任务;递归失控就「爆栈」 | 第 3 课 |
| 🚶队列 | 先进先出 | 排队公平、削峰兜底 | 不能插队,中间的取不到 | 任务队列、消息队列:Agent 的活是排着队干的 | 第 4 课 |
| 🗃哈希表 | 算出位置,一步直达 | 查找 / 去重快到不讲理 | 没有顺序,还要多花内存 | Set / 字典、session 查找、缓存的键、语料去重 | 第 5 课 |
| 💾缓存 | 算过的别再算 | 省时间也省钱 | 何时作废最难拿捏 | KV Cache、语义缓存、浏览器缓存、CDN——账单的隐形折扣 | 第 6 课 |
| 🌳树变体:Trie 前缀树 | 层层分叉,按层级找 | 天然表达嵌套与从属 | 只认父子关系,平级互连表达不了 | 文件目录、JSON、AST;Trie 是 Tokenizer 切词的秘密 | 第 7 / 9 课 |
| 🕸图 | 万物皆可连 | 表达任意多对多关系 | 容易绕圈,遍历成本高 | 知识图谱、社交网络、多 Agent 协作的 DAG 工作流 | 第 8 课 |
| 🧭向量 | 语义变坐标,相似即邻近 | 按「像不像」找东西 | 结果是近似的,还得配专门索引 | Embedding + RAG 检索:找最近的邻居;HNSW 让亿级瞬答 | 第 10 课 |
💡 手机上表格可以左右滑动查看
背表没用,会选才算会。下面 8 个真实场景,先在心里想好答案,再点卡片对答案。全部点完有彩蛋。
已对答案 0 / 8 个场景
6 道二选一,每道都来自前面十课的关键判断。点选即时判定,留意解析里的「为什么」——那才是验收时要说出口的话。
「一 · 八种收纳方式,一张表」为什么要看操作
「每行一种结构:一句话口诀、最亮的强项、最疼的弱项、它在 AI 世界的真身、哪一课讲的。」把结构落到了一个具体动作。这里真正要比较的不是名词谁更高级,而是数据如何被放置,以及最常发生的操作需要走多远。
读懂结构,要同时看访问方式和变化方式
「背表没用,会选才算会。下面 8 个真实场景, 先在心里想好答案,再点卡片对答案 。全部点完有彩蛋」揭示了一个容易被忽略的取舍:按位置读取、按键查找、从两端进出、插入新元素和遍历关系,适合的组织方式并不相同。一个结构在某个操作上很快,不代表它在所有操作上都快。
- 数据结构 = 收纳方式 :从第一课的「找钥匙」到今天,所有结构都是这一个隐喻的变体
- 先问「怎么找」 :按位置→数组;按 key→哈希;按层级→树;按关系→图;按相似→向量
- 再问「怎么进出」 :先进先出→队列;后进先出→栈
把规模和更新频率一起算进去
实践时可以把「6 道二选一,每道都来自前面十课的关键判断。点选即时判定, 留意 解析里的「为什么」——那才是验收时要说出口的话」当作边界提醒:先写下数据量、最常用的操作和允许的延迟,再看 AI 给出的结构是否真的匹配。
从「一 · 八种收纳方式,一张表」走到「二 · 场景选型器:看到场景,报出结构」
「一 · 八种收纳方式,一张表」先把问题落在「每行一种结构:一句话口诀、最亮的强项、最疼的弱项、它在 AI 世界的真身、哪一课讲的。 留意 「弱项」那一列——选错结构的代价,全写在那里」上;到了「二 · 场景选型器:看到场景,报出结构」,讨论继续推进到「背表没用,会选才算会。下面 8 个真实场景, 先在心里想好答案,再点卡片对答案 。全部点完有彩蛋」。两段连起来,重点就不只是记住一个结论,而是看清它成立所依赖的条件。
把这条判断带到下一个场景
遇到一个新的数据结构时,不要从定义开始背。先写出最频繁的操作,再估计数据量和更新方式,最后检查结构是否让这三个条件同时成立。
- 「一 · 八种收纳方式,一张表」:每行一种结构:一句话口诀、最亮的强项、最疼的弱项、它在 AI 世界的真身、哪一课讲的。 留意 「弱项」那一列——选错结构的代价,全写在那里
- 「二 · 场景选型器:看到场景,报出结构」:背表没用,会选才算会。下面 8 个真实场景, 先在心里想好答案,再点卡片对答案 。全部点完有彩蛋
- 「最后的要点」:你的角色是验收 :不用手写任何一种结构,但要能在 AI 的代码里认出它们、问出那句「为什么」
最后的「最后的要点」把讨论落到「你的角色是验收 :不用手写任何一种结构,但要能在 AI 的代码里认出它们、问出那句「为什么」」。回看这条线索时,最值得保留的是:当输入、规模或风险改变,哪些判断需要重新做一遍。
✅ 这一章想和你带走的
- 数据结构 = 收纳方式:从第一课的「找钥匙」到今天,所有结构都是这一个隐喻的变体
- 先问「怎么找」:按位置→数组;按 key→哈希;按层级→树;按关系→图;按相似→向量
- 再问「怎么进出」:先进先出→队列;后进先出→栈
- 空间换时间是常青招:哈希表多备桶、缓存多存结果,换来的都是速度和账单折扣
- 你的角色是验收:不用手写任何一种结构,但要能在 AI 的代码里认出它们、问出那句「为什么」
我把这篇文章里的一个判断改写成了今天可以验证的小实验。比记住结论更有用的是,知道下一步要观察什么。
读完以后我先回头找它成立的条件,而不是直接把方法搬进项目。这个顺序让后面的取舍清楚很多。
如果把这个判断放到真实工作里,最先需要补的约束是什么?我想知道从阅读到第一次实践之间,哪一步最值得先做。
还没有这篇文章的讨论。