Java 后端面试题库 / 全部题解免费阅读理解原理,有条理地回答

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 题。

这道题,你掌握得怎么样?

掌握程度由你主动标记,阅读和收藏不会自动改变状态。