- 存放的元素是键值对
- Hashtable的键和值都不能为null,否则会抛出空指针异常
public synchronized V put(K var1, V var2) {
if (var2 == null) {
throw new NullPointerException();
}
- Hashtable使用方法基本和HashMap一样
- Hashtable线程安全(synchronized),HashMap线程不安全
- 底层有数组 Hashtable$Entry[](每个单元就是一个Node对象,HashMap的底层数组就是这个Hashtable散列表,注意不是HashTable), 初始化大小为11,加载因子是0.75,临界值是8(超过8,到达9即扩容)。
public Hashtable() {
this(11, 0.75F);
}
- 扩容机制为扩大原有容量的2n+1
int var3 = (var1 << 1) + 1;
- 下标值计算(var1为key的hashcode(),var5为现有table的长度):
var4 = (var1 & 2147483647) % var5.length
本文深入解析了Java中的Hashtable类,重点介绍了其不允许键值对为null的特点,以及线程安全的特性。同时,对比了Hashtable与HashMap在使用上的相似性和线程安全性上的差异。还详细阐述了Hashtable的扩容机制,初始容量为11,负载因子为0.75,并展示了下标计算的方法。
1527

被折叠的 条评论
为什么被折叠?



