您的位置:首页 > 编程语言 > Java开发

java基础---HashMap和HashTable的异同之处

2015-07-21 01:42 513 查看
1:连个都实现了Map的接口,两者的底层数据结构相同,都是transient修饰的entry数组,transient修饰的变量不会序列化即不会持久化,序列化的过程中不会包含这个变量,这个变量的生命周期仅仅是在用户的调用过程中,不能持久化到内存磁盘中。这样便于一些敏感信息的保存

2:HashMap是不安全的,不能同步,不支持多线程并发,HashTable是安全的,有同步锁,但效率低。

3:HashMap从AbstractMap继承而来,HashTable是从Dictionary继承而来

4:HashMap允许Null存在,表示key对应的value值不存在或者就是null。而HashTable不能有null

5:HashTable的hash是直接使用对象的hash,而HashMap要重新算起散列值,因而更加散列,有助于减少冲突。提高效率

6:HashTable可以用Itertor来实现遍历,HashMap也可以用这个,但在早起版本中HashTable还可以用Enumeration来遍历

7:HashTable缺省初始化数组的大小是11,可以指定数组的初始化大小,扩容采用的规则是old*2+1,

HashMap缺省的数组大小是16,长度保持2的倍数,扩容时选择大于initCaptiy的最小的2的倍数的大小

8两者都支持FF失败机制
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: