##jdk 1.8## 1. Hashtable
Hashtable<
String,
Integer> hash =
new Hashtable<>();
1.key-value均不能为空,否则NullPointerException。
2.put相同的
key,value值替换,返回原value。
3.方法被synchronized修饰,保证线程安全,影响效率。
4.put流程:判断是否为空,若不为空
key-->hashcode-->index(value在链表中的索引)。
5.继承Dictionary类
2.HashMap
Map map = new HashMap
<>();
1. key
-value均能为空
2. 线程不安全
3. 继承AbstractMap类
3.Hashtable与HashMap的区别
1.Hashtable继承自Dictionary类,HashMap继承自AbstractMap
2.Hashtable的key-
value均不能为空,HashMap都可以。
3.Hashtable线程安全,HashMap线程不安全。
4.ConcurrentHashMap
ConcurrentHashMap chm =
new ConcurrentHashMap<>();
1. key-
value均不能为空
2. 线程安全,锁分离,put部分加锁,
get不受限制,并发首选
3. 继承AbstractMap类