1. 一句话总结
-
HashMap:最快,但不是线程安全
-
HashTable:线程安全,但很慢(基本不用了)
-
ConcurrentHashMap:又快又线程安全(推荐用这个)
2. 简单对比
| 对比项 | HashMap | HashTable | ConcurrentHashMap |
|---|---|---|---|
| 线程安全 | 不安全 | 安全 | 安全 |
| 速度快吗 | 最快 | 最慢 | 很快 |
| 能放null吗 | 可以 | 不能 | 不能 |
| 现在用得多吗 | 单线程常用 | 基本不用 | 多线程常用 |
3. 如何选择
情况1:只有你一个人用程序
选 HashMap
→ 因为最快
javaMap<String, String> map = new HashMap<>(); map.put("姓名", "张三"); map.put(null, "可以放null"); // ✔ HashMap允许null情况2:很多人同时用程序
选 ConcurrentHashMap
→ 因为又快又安全
javaMap<String, String> map = new ConcurrentHashMap<>(); map.put("姓名", "张三"); // map.put(null, "值"); // ✘ 不能放null键情况3:不要选 HashTable
太老了,速度慢
有更好的替代品(ConcurrentHashMap)
javaMap<String, String> map = new Hashtable<>(); // 别用!