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<>();  // 别用!
相关推荐
小何code4 分钟前
【Python零基础入门】第4篇:Python变量与数据类型详解
开发语言·python
xiaoshuaishuai813 分钟前
C# 数字资源分发
开发语言·c#
techdashen13 分钟前
用自家产品构建自家产品:Cloudflare Images 的工程架构解析
开发语言·架构·rust
Lumos_77718 分钟前
Linux -- 共享内存
java·linux·运维
笑不语21 分钟前
从共病网络到可解释 AI:同济医院 10 分 SCI 全流程复现(R 语言)
开发语言·人工智能·r语言
t***54422 分钟前
如何在 Dev-C++ 中设置 MinGW 和 Clang 的路径
java·前端·c++
yu859395823 分钟前
利用MATLAB进行木材图像去噪
开发语言·算法·matlab
拜托啦!狮子25 分钟前
安装EnsDb.Hsapiens.v86
java·服务器·前端
报错小能手31 分钟前
Swift EventBus讲解
开发语言·ios·swift
aq553560031 分钟前
GitSubmodule深度避坑指南
java·开发语言·php