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

集合

49 道题目
我的收藏与复习
题干与完整题解免费阅读第 2 / 5 页

答:HashMap 允许 null 键和值,Hashtable 都不允许;HashMap 的 get 返回 null,既可能是没有该键,也可能是该键对应 null,需要 containsKey 辅助区分。Hashtable 常用方法有同步保护,但多个调用拼起来仍不自动原子化。这些差异会影响查询逻辑和旧代码迁移。

专注学习

答:HashSet 内部用 HashMap 保存元素:元素作为键,值使用统一的占位对象。add 是否新增,取决于内部映射里是否已经有相等的键;contains 与 remove 也借助键查找。因此,HashSet 依赖元素稳定的 hashCode 与 equals,而不是把对象的地址当作唯一标准。

专注学习

答:集合框架把容器契约、存储实现与通用算法分开:接口定义可用操作,ArrayList、HashMap 等实现选择数据结构,Collections 等工具提供排序或包装方法。算法依赖约定工作,而实现负责兑现约定。不同实现可以共享接口,但复杂度、顺序和并发能力仍可能不同。

专注学习

答:先确认方法是修改原集合、返回视图,还是创建新结果,再检查输入条件。排序和反转会改列表;unmodifiableList 返回不可修改视图,不隔离原列表变化;synchronizedList 保护单次调用,遍历还需遵守同步规则。只读、快照与线程安全是不同要求。

专注学习

答:可以先问数据怎样使用:逐项遍历看 Iterable,管理一组元素看 Collection,按位置访问看 List,唯一成员看 Set,等待处理看 Queue,两端操作看 Deque,键值对应看 Map。Java 21 的 Sequenced 系列补充首尾及反向视图能力,不能用旧版接口名单替代当前结构。

专注学习

答:Collection 的基本单位是一个元素,Map 的基本单位是键到值的映射。Map 的 put 需要两个角色,键必须唯一而值可以重复,无法直接套用 Collection.add 的单元素语义。因此,Java 把它们设计成两个接口分支,再通过 keySet、values、entrySet 提供集合视图。

专注学习

答:两者都以可增长数组实现 List,支持按位置访问、重复值和 null。ArrayList 不提供内置同步,Vector 的常用方法带同步保护。新代码通常先选 ArrayList;多线程需求应按访问模式选择同步包装器或并发集合,而不是只凭 Vector 的同步标签决定。

专注学习
本页 10 道,共 49 道浏览其他领域