专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 问答 技术问答 HashMap和Hashtable的不同之处有哪些?

HashMap和Hashtable的不同之处有哪些?

我们的未来已回答

工程师,Java 让世界更强大。

首先第一点是HashMap不是线程安全的,但是Hashtable是线程安全的

HashMap的key和value都可以为NULL,但是Hashtable的key和value都不能为NULL,否则直接报错。

在HashMap中的put()方法中,在定位桶数组的下标的时候,使用的是key的hashcode &(n - 1) 跟通数组的长度进行与的位运算,但是在Hashtable中的时候,用到的是(hash & 0x7FFFFFFF) % tab.length;这是对桶数组的长度进行取模,效率肯定没有上一步的hashmap的效率高

HashMap的初始化默认桶数组的长度是16负载因子0.75,但是在Hashtable中的通数组的默认长度是11负载因子是0.75,在进行扩容的时候也会有点不一样,在Hashtable中的扩容时用的是(oldCapacity << 1) + 1(也就是把原来的桶数组长度左移一位二进制,也就是长度*2+1)来进行的,而在HashMap中是直接二倍进行扩容的。

浏览798技术问答
2021-08-17 08:59:50

聚焦热点问题
时时免费答疑

累计0人询问

极速问
  >>其他人还看过
更多问答

Java实验班

0学费 专业学前测评

Java就业班

围绕企业 直达就业

Java夜校班

业余时间学 超高性价比

Java架构师班

升职加薪 快速变现

返回顶部