HashMap和HashTable的区别和联系


HashMap和HashTable的区别和联系

1.继承父类:

HashMap继承AbstracMap;HashTable继承Dictionary;都同时实现了map,Cloneable(可复制),Serializable(可序列化)这三个接口

2.默认容量:

HashMap:16;HashTable:11

3.Table初始化时机:

HashMap:第一次put;HashTable:构造函数中初始化

4.并发操作:

HashMap:没有同步机制,需要使用者自己进行并发访问控制; HashTable:实际应用程序中,仅仅是Hashtable本身的同步并不保证程序在并发操作下的正确性,需要高层次的并发保护

5.遍历方式:

HashMap:iterator;HashTable:iterator和enumeration

6.是否支持fast-fail(快速失败机制):

用iterato遍历支持fast-fail;用enumeration遍历不支持

7.是否接受值为null的key或者value:

HashMap:接受;HashTable:不接受

8.根据hash值计算数组下标算法:

hashtable:低位数值分数不均匀时,不同的hash值计算得到相同下标的机率较高;hashmap:优于hashtable,通过对key的hash做移位运算和位的与运算,使其能更广泛的分散到不同位置

9.entry数组的长度:

HashMap:缺省初始长度为16,长度始终保持2的n次方初始化时可以指定initial capacity,如果不是2的n次方则选取第一个大于initial capacity的2的n次方值作为其初始长度;HashTable:缺省初始长度为11,初始化时可以指定initial capacity。

10. loadFactor负荷因子:

hashtable:0.75;

11.负荷超过时,内部数据的调整方式:

两者都会重新根据key的hash值计算其在数组中的新位置,重新放置,算法相似,时间,空间效率相同。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值