HashTable和HashMap的区别

HashTable和HashMap的区别:

1 该类实现了一个哈希表,HashTable的key和value都不可以为null。HashMap中key和value均可为null。
2 HashTable默认初始容量11,负载因子0.75;HashMap默认初始容量16,负载因子0.75。Hashtable不要求底层数组的容量一定要为2的整数次幂,扩容后的大小: old+old+1;而HashMap则要求一定为2的整数次幂,扩容后的大小: old+old。
3 HashTable 是线程安全的(因为它每个方法中都加入了Synchronize),HashMap是非线程安全的。
4 Hashtable计算hash值,直接用key的hashCode(),而HashMap重新计算了key的hash值,Hashtable在求hash值对应的位置索引时,用取模运算,而HashMap在求位置索引时,则用与运算。

HashTable类图结构:
在这里插入图片描述

HashMap 类图结构:
在这里插入图片描述

HashTable底层实现原理跟HashMap基本相同,可参考我的博客 HashMap深度解析

提醒:

HashTable被改造为实现Map接口,使其成为成员Java Collections Framework 。 如果不需要线程安全的实现,建议使用HashMap代替Hashtable 。 如果需要线程安全的并发实现,那么建议使用ConcurrentHashMap代替Hashtable 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值