List、Set、Map 和 Queue 怎样区分?
先说出你的答案
定义边界、关键机制、一个反例;P8题再补容量、失败与验证。
查看完整题解
参考回答
直接回答
List 表达有位置、可重复的序列;Set 表达不重复的成员;Map 表达键与值的对应,一个键至多对应一个值;Queue 表达待处理元素及取出策略。Queue 不一定先进先出,例如优先队列按优先级取出。容器是否接受 null、是否可修改,要看具体实现。
讲清原理
| 接口 | 适合表达 | 必须明确的约束 |
|---|---|---|
| List | 购物项、步骤 | 顺序与索引 |
| Set | 已报名用户 | 什么算重复 |
| Map | 用户编号到资料 | 键判等及覆盖规则 |
| Queue | 等待处理的任务 | 取出次序及满/空行为 |
Queue 的 add/remove/element 与 offer/poll/peek 成对提供不同失败方式;后者常用特殊结果表达满或空。Deque 可在两端操作,可用于栈与队列。
例子与易错点
两个相同商品可以在 List 占两个位置;Set 通常只留一个;Map 可用商品编号记录数量;Queue 则关注下一个处理哪一项。它们不是四种存储速度等级。
Set 的唯一性不代表元素不可变;Map 的 values 也不去重。队列若允许 null,poll 返回 null 时会难以区分“空队列”与“取到 null”,所以很多队列实现禁止 null。
相关题:第 1 题、第 18 题、第 27 题。
和评分标准对照,你能独立回答到哪一步?
自评会安排下一次复习,不保存你的口述内容。
这道题,你掌握得怎么样?
掌握程度由你主动标记,阅读和收藏不会自动改变状态。