关闭

HashMap与Hashtable的区别

瞎溜达 1年前 ⋅ 183 阅读
  • 线程安全:HashMap是非线程安全的,Hashtable是线程安全的,Hashtable的方法基本都是经过synchronized修饰;
  • 效率:HashMap要比Hashtable效率高一些;
  • Null key和Null value:HashMap可以存储null key和value,只能有一个null key,null value可以有多个;Hashtable不允许有null key和null value,会拋出NullPointerException;
  • 初始容量大小和扩容大小不同
    1. 创建时不指定容量初始值:Hashtable默认初始大小为11,之后每次扩容变为原来的2n+1;HashMap默认的初始化大小为16,之后每次扩容为原来的2倍;
    2. 创建时指定容量初始值:Hashtable直接使用给定值,而HashMap会将其扩充为2的幂次方大小,也就是说HashMap总是使用2的幂作为哈希表的大小;
  • 底层数据结构:JDK8以后HashMap在解决哈希冲突时有了较大的变化,当链表长度大于阈值(默认为8)时将链表转化为红黑树,以减少搜索时间。

全部评论: 0

    我有话说: