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

Hashtable、HashMap、TreeMap 有什么区别?

查看完整题解

参考回答

直接回答

HashMap 和 Hashtable 按哈希组织键,TreeMap 按比较规则维护有序键。HashMap 不同步且允许 null 键和值;Hashtable 常用方法同步并拒绝 null;TreeMap 不同步,允许 null 值,自然顺序下拒绝 null 键,定制比较器能够处理 null 时可另行支持。

讲清原理

实现 查找基础 顺序 典型基本操作
HashMap 哈希与键判等 不保证 分布良好时通常近 O(1)
Hashtable 哈希与键判等 不保证 还受同步与负载影响
TreeMap 比较结果 键排序 get/put/remove 保证 O(log n)

TreeMap 还提供 floorKey、ceilingKey、subMap 等邻近与范围能力。比较为零的键会被当成同一个键,因此比较器与 equals 的一致性很重要。

例子与易错点

成绩单要按学号取值,HashMap 可能足够;还要找“不超过某编号的最近一项”,TreeMap 的有序导航更贴切。Hashtable 的同步并不能代替整个“查找再更新”流程的原子设计。

别把 HashMap 的某次打印顺序当成承诺;也别以为 TreeMap 会按 value 排序。按值排序需要另外收集条目并指定比较规则。

相关题:第 3 题、第 6 题、第 31 题、第 45 题。

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

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