HashTable和HashMap的区别

HashTableHashMap
继承的父类和接口extends:Dictionary<K,V>
implements:Map<K,V>, Cloneable, java.io.Serializable
extends:AbstractMap<K,V>
implements Map<K,V>, Cloneable, Serializable
默认容量1116
table的初始化时机构造函数时第一次添加元素时
线程安全线程安全
但不是绝对安全
线程不安全
数据遍历方式Enumeration或IteratorIterator
快速失败机制Iterator遍历时支持
Enumeration遍历时不支持
支持
添加重复key不能
key或value为null都不能都可以
hash值计算下标的方法hashSeed ^ k.hashCode();
没有扰动处理,index重复率高

计算index:
int index = (hash & 0x7FFFFFFF) % tab.length;
保证hash值不为负数
h ^= k.hashCode();
h ^= (h >>> 20) ^ (h >>> 12);
return h ^ (h >>> 7) ^ (h >>> 4);

计算index:
h & (length-1);
Entry数组长度1116,并始终保持2的幂
LoadFactor负荷因子0.750.75
超过负荷时,内部数据的调整方式2倍+1,然后重新计算所有元素的存储位置
保证是奇数,取余后的结果相比于偶数更加分散
重复率更低
2倍,然后重新计算所有元素的存储位置
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值