Java_Hashtable使用及扩容
基本介绍:
1)存放的元素是键值对,即 K-V
2)Hashtable的键和值都不能为null ,否则抛出NullPointerException
3)Hashtable使用方法基本上和HashMap一样
4)Hashtable是线程安全的(synchronized),HashMap是线程不安全的
public class Hashtable<K,V>extends Dictionary<K,V>implements Map<K,V>, Cloneable, java.io.Serializable
Hashtable扩容机制:
1.Hashtable底层是一个Hashtable$Entry类型的数组,初始化大小为11
2.threshold(临界值)是8, 由11*加载因子(0.75)得到
import java.util.Hashtable;@SuppressWarnings({"all"})
public class HashTableExercise {public static void main(String[] args) {Hashtable table = new Hashtable();//oktable.put("john", 100); //ok//table.put(null, 100); //异常 NullPointerException//table.put("john", null);//异常 NullPointerExceptiontable.put("lucy", 100);//oktable.put("lic", 100);//oktable.put("lic", 88);//替换table.put("hello1", 1);table.put("hello2", 1);table.put("hello3", 1);table.put("hello4", 1);table.put("hello5", 1);table.put("hello6", 1);System.out.println(table);//1. 底层有数组 Hashtable$Entry[] 初始化大小为 11//2. 临界值 threshold 8 = 11 * 0.75//3. 扩容: 按照自己的扩容机制来进行即可.//4. 执行 方法 addEntry(hash, key, value, index); 添加K-V 封装到Entry//5. 当 if (count >= threshold) 满足时,就进行扩容//5. 按照 int newCapacity = (oldCapacity << 1) + 1; 的大小扩容.}
}
Hashtable与HashMap对比:

