HashMap 与 Hashtable 的区别

\HashtableHashMap
继承父类不同继承 Dictionary继承AbstractMap
默认容量1116
Table的初始化时间构造函数中初始化第一次使用put方法
并发操作使用同步机制,实际应用程序中,仅仅是Hashtable本身的同步并不能保证程序在并发操作下的正确性,需要高层次的并发保护。下面的代码试图在key所对应的value值等于x的情况下修改value为x+1{value = hashTable.get(key); if(value.intValue()== x){hashTable.put(key, new Integer(value.intValue()+1)); }}如2个线程同时执行以上代码,可能放入不是x+1,而是x+2.没有同步机制,需要使用者自己进行并发访问控制
数组的遍历方式Iterator 和 EnumerationIterator
是否支持fast-fail用Iterator遍历,支持fast-fail ; 用Enumeration遍历,不支持fast-fail支持fast-fail
是否接受值为null的Key或者Value不接受接受
根据hash值计算数组下标的算法当数组长度较小,并且Key的hash值低位数值分散不均匀时,不同的hash值计算得到相同下标值的几率较高优于hashtable,通过对Key的hash做移位运算和位的与运算,使其能更广泛地分散到数组的不同位置
Entry数组的长度缺省初始长度为11,初始化时可以指定initial capacity缺省初始长度为16,长度始终保持2的n次方初始化时可以指定initial capacity,若不是2的次方,HashMap将选取第一个大于initial capacity 的2n次方值作为其初始长度
LoadFactor负荷因子0.750.75
负荷超过(loadFactor * 数组长度)时,内部数据的调整方式扩展数组:2*原数组长度+1扩展数组: 原数组长度 * 2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值