HashTable的基本介绍
1、存放的元素是键值对:即K-V
2、hashtable的键和值都不能为null,否则会抛出NullPointerExce
3、hashTable使用方法基本上和HashMap一样
4、hashTable是线程安全的,hashMap是线程不安全的
5、简单看下底层结构
HashTable的应用案例
//下面的代码是否正确,如果错误,为什么
table.put("john",100);//ok
table.put(null,100);//异常,Key不能为空
table.put("john",null);//异常,value不能为空
table.put("lucy",100);//ok
table.put("lic",100);//ok
table.put("lic",88);//替换
sout(table);
import java.util.Hashtable;
/**
 * @ClassName HashTableExercise
 * @Description
 * @Author 小黄debug
 * @Date 2022/3/13 21:59
 * @Version 1.0
 **/
public class HashTableExercise {
    public static void main(String[] args) {
        Hashtable table = new Hashtable();
        table.put("john", 100);//ok
        //table.put(null, 100);//空指针异常,Key不能为空
        //table.put("john", null);//空指针异常,value不能为空
        table.put("lucy", 100);//ok
        table.put("lic", 100);//ok
        table.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);
        table.put("hello7",1);
        System.out.println(table);
        //简单说明下下Hashtable的底层
        //1.底层有数组 Hashtable$#ntry[] 初始化大小为11
        //2.临界值 threshold 8 = 11 * 0.75
        //3.扩容:按照自己的扩容机制来进行即可
        //4.执行 方法 addEntry(hash,key,value,index);   添加K-V
        //5.当 if(count >= threshold)满足时,就进行扩容
        //6.按照 int newCapacity = (oldCapacity << 1)+1;的大小扩容
    }
} 
Hashtable和HashMap对比
| 版本 | 线程安全(同步) | 效率 | 允许null键null值 | |
| HashMap | 1.2 | 不安全 | 高 | 可以 | 
| Hashtable | 1.0 | 安全 | 较低 | 不可以 | 










