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<>();  // 别用!
相关推荐
共享家952717 小时前
C++ string 类从原理到实战
开发语言·c++
Lyyaoo.17 小时前
What is Maven?
java·spring boot·maven
库奇噜啦呼17 小时前
【iOS】Effective Objective-C第一章
开发语言·ios·objective-c
23.17 小时前
【Java】NIO零拷贝:为何transferTo需要循环调用?
java·面试·nio
I_LPL17 小时前
day48 代码随想录算法训练营 图论专题1
java·算法·深度优先·图论·广度优先·求职面试
架构师沉默17 小时前
如果 Spring 没了,Java 会怎么样?
java·后端·架构
不会写DN17 小时前
Go 语言并发编程的 “工具箱”
开发语言·后端·golang
叶宇燚18 小时前
Java整理--数据结构篇
java·开发语言·数据结构
晚枫歌F18 小时前
btree B树实现key-value存储
开发语言·数据结构
foundbug99918 小时前
多智能体三维编队飞行控制MATLAB实现
开发语言·matlab