[Java] HashMap和HashTable的区别

  • HashTable

Hashtable继承于Dictionary字典,实现Map接口

键、值都不能是空对象

多次访问,映射元素的顺序相同

线程安全

hash算法 ,Hashtable则直接利用key本身的hash码来做验证

数据遍历的方式 Iterator (支持fast-fail)和 Enumeration (不支持fast-fail)

缺省初始长度为11,内部都为抽象方法,需要 它的实现类一一作自己的实现

备注:程序在对 collection 进行迭代时,某个线程对该 collection 在结构上对其做了修改,这时迭代器就会抛出 ConcurrentModificationException 异常信息,从而产生 fail-fast。

  • HashMap

HashMap继承于AbstractMap抽象类

键和值都可以是空对象

多次访问,映射元素的顺序可能不同

非线程安全 
HashMap可以通过下面的语句进行同步: 
Map m = Collections.synchronizeMap(hashMap);

检测是否含有key时,HashMap内部需要将key的hash码重新计算一边再检测

数据遍历的方式 Iterator (支持fast-fail)

缺省初始长度为16,其内部已经实现了Map所需 要做的大部分工作, 它的子类只需要实现它的少量方法


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值