Java中不存在标准术语“字典表”,所谓字典表实为已废弃的Dictionary抽象类及其子类(如Hashtable、Properties)的非正式称呼,自JDK 1.2起被泛型Map接口及其实现全面替代。

Java 中没有“字典表”这个标准术语,所谓“字典表”通常是对 Dictionary 抽象类或其子类(如 Hashtable、Properties)的非正式称呼,源于其键值映射行为类似数学中的“映射”(mapping)。但它早已被现代 Map 接口及其实现全面取代——不是升级,而是替代;不是兼容演进,而是设计范式的重构。
Dictionary 是一个被废弃的遗留抽象类
Dictionary 出现在 JDK 1.0,是 Java 最早提供的键值映射抽象类。它没有泛型、不支持 null 键或值、方法签名松散(如 get(Object) 返回 Object)、缺乏集合视图(无法直接获取 keySet 或 entrySet)。从 JDK 1.2(1998 年)起,它就被明确标记为 @Deprecated,官方文档强烈建议停止使用。你不能 new 它,也不该继承它——所有主流实现都已转向 Map 接口。
Map 接口才是现代键值映射的标准契约
Map<k v></k> 是泛型接口,定义了清晰、安全、可扩展的键值操作规范。它的核心能力包括:
- 统一的增删改查:如
put(K,V)、get(K)、remove(K) - 存在性判断:
containsKey(Object)和containsValue(Object) - 集合视图支持:
keySet()、values()、entrySet(),便于遍历与转换 - 嵌套接口
Map.Entry<k></k>提供对单个键值对的结构化访问
常用实现类各司其职,不再依赖 Dictionary 血统
当前开发中应直接选用以下 Map 实现类,它们彼此独立,均直接实现 Map 接口,与 Dictionary 无继承关系:
立即学习“Java免费学习笔记(深入)”;
-
HashMap:基于哈希表,非线程安全,允许
null键/值,性能最优,最常用 - LinkedHashMap:保留插入顺序或访问顺序,适合 LRU 缓存等场景
- TreeMap:基于红黑树,按键自然排序或自定义比较器排序
-
ConcurrentHashMap:高并发安全,分段锁或 CAS + synchronized 优化,替代旧版
Hashtable -
Hashtable 虽实现了
Map接口,但因历史包袱(继承Dictionary、强制同步、不支持null)已不推荐新用
为什么必须放弃 Dictionary 思维
继续沿用 Dictionary 相关概念会带来实际风险:
- 代码无法使用泛型,类型安全靠人工保证,易出
ClassCastException - 无法利用现代集合工具类(如
Map.of()、Map.copyOf()、Stream 支持) - 与 Spring、Jackson、Hibernate 等主流框架的 Map 处理逻辑不一致,集成成本高
- 团队新人容易误以为它是“基础类”,反而绕过更合理的设计路径
本质上,这不是版本兼容问题,而是编程模型的代际更替——就像不再用 Vector 替代 ArrayList,也不该用 Dictionary 替代 Map。


















