HashTable, HashMap, ConcurrentHashMap 之间的区别

1. 一句话总结

  • HashMap:最快,但不是线程安全

  • HashTable:线程安全,但很慢(基本不用了)

  • ConcurrentHashMap:又快又线程安全(推荐用这个)

2. 简单对比

对比项 HashMap HashTable ConcurrentHashMap
线程安全 不安全 安全 安全
速度快吗 最快 最慢 很快
能放null吗 可以 不能 不能
现在用得多吗 单线程常用 基本不用 多线程常用

3. 如何选择

情况1:只有你一个人用程序

选 HashMap

→ 因为最快

java 复制代码
Map<String, String> map = new HashMap<>();
map.put("姓名", "张三");
map.put(null, "可以放null");  // ✔ HashMap允许null

情况2:很多人同时用程序

选 ConcurrentHashMap

→ 因为又快又安全

java 复制代码
Map<String, String> map = new ConcurrentHashMap<>();
map.put("姓名", "张三");
// map.put(null, "值");  // ✘ 不能放null键

情况3:不要选 HashTable

太老了,速度慢

有更好的替代品(ConcurrentHashMap)

java 复制代码
Map<String, String> map = new Hashtable<>();  // 别用!
相关推荐
这是个栗子13 分钟前
前端开发中的常用工具函数(九)
开发语言·javascript·ecmascript·at
蓝创工坊Blue Foundry20 分钟前
图片文字提取到 Excel:批量任务如何先定义要交付的字段
运维·服务器·开发语言·数据库·自动化·ocr·excel
会飞的小新23 分钟前
C 标准库之 <fenv.h> 详解与深度解析
c语言·开发语言·microsoft
曹牧44 分钟前
文档格式:OFD
java
豆角焖肉1 小时前
Maven进阶与搭建私服
java·maven
大不点wow1 小时前
Java序列化与反序列化:让对象走出JVM
java·开发语言·jvm
阿里嘎多学长1 小时前
2026-07-22 GitHub 热点项目精选
开发语言·程序员·github·代码托管
噢,我明白了1 小时前
Java中日期和字符串的处理
java·开发语言·日期
爱刷碗的苏泓舒1 小时前
C 语言 if-else 与 switch-case 分支语句对比
c语言·开发语言
dkbnull2 小时前
Spring Boot请求处理组件对比详解
java·spring boot