HashTable的基本介绍
1. 存放的元素是键值对 K-V
2. HashTable的键和值都不能为null,否则会抛出空指针异常
3. HashTable是线程安全的(synchronized),HashMap是线程不安全的
简单说明HashTable的底层
- 底层有数组HashTable$Entry[] 初始化大小为11,加载因子为0.75
- 临界值 threshold 8 = 11* 0.75
- 扩容机制:
public synchronized V put(K key, V value) { ==》
addEntry(hash, key, value, index); ==》
if (count >= threshold) { //如果当前数量大于等于临界值,就 ==》
rehash(); (扩容) ==》 int newCapacity = (oldCapacity << 1) + 1; (旧容量 * 2 + 1)
HashMap和HashTable的对比
开发中如何选择集合实现类