HashMap和HashTable的区别和联系
HashMap和HashTable的区别和联系
1.继承父类:
HashMap继承AbstracMap;HashTable继承Dictionary;都同时实现了map,Cloneable(可复制),Serializable(可序列化)这三个接口2.默认容量:
HashMap:16;HashTable:113.Table初始化时机:
HashMap:第一次put;HashTable:构造函数中初始化4.并发操作:
HashMap:没有同步机制,需要使用者自己进行并发访问控制; HashTable:实际应用程序中,仅仅是Hashtable本身的同步并不保证程序在并发操作下的正确性,需要高层次的并发保护5.遍历方式:
HashMap:iterator;HashTable:iterator和enumeration6.是否支持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值计算其在数组中的新位置,重新放置,算法相似,时间,空间效率相同。