Hashtable和HashMap的区别-最全面

HashMap与Hashtable的主要区别在于:HashMap允许null键和值,但Hashtable不支持;HashMap非线程安全,而Hashtable是线程安全的;HashMap使用containsKey()和containsValue()替代了Hashtable的contains();两者继承自不同的父类,HashMap继承AbstractMap,Hashtable继承Dictionary;在存储方式上,HashMap根据key的hashcode计算存取,而Hashtable直接用hashcode;它们的初始容量和扩容策略也有所不同,HashMap初始容量16,扩容2倍,Hashtable初始容量11,扩容2倍加1。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

HashMap允许有null键,多个null值;HashTable不支持 null键和null值(ConcurrentHashMap不支持 null键和null值)
HashMap是非线程安全的(get put方法均无synchronized修饰),HashTable是线程安全的(get put方法均有synchronized修饰)
HashMap把Hashtable的contains()方法修改成了containsKey()containsValue()方法
HashMap继承自AbstractMap,HashTable继承自Dictionnary;
HashMap是根据key的hashcode计算出hash值进行存取,Hashtable直接是根据key的hashcode进行存取
HashMap的初始容量是16,以后每次扩容为之前的2倍;Hashtable的初始容量是11,以后每次扩容为之前的2倍加1; 

1.
public class Hashtable<K,V>
    extends Dictionary<K,V>
    implements Map<K,V>, Cloneable, java.io.Serializable {		
/////////////////////////////////////////////		
public class HashMap<K,V> extends AbstractMap<K,V>
implements Map<K,V>, Cloneable, Serializable {
Hashtable继
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二十六画生的博客

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值