17. HashMap和HashTable的区别。

HashMap:

特点:

  1. HashMap继承于AbstractMap抽象类
  2. 键和值都可以是空对象
  3. 多次访问,映射元素的顺序可能不同
  4. 非线程安全
  5. HashMap可以通过下面的语句进行同步:

    Map m = Collections.synchronizeMap(hashMap);

  6. 检测是否含有key时,HashMap内部需要将key的hash码重新计算一边再检测
  7. 数据遍历的方式 Iterator (支持fast-fail)
  8. 缺省初始长度为16,其内部已经实现了Map所需 要做的大部分工作, 它的子类只需要实现它的少量方法, 扩容后为原始长度*2。
HashTable:

特点:

  1. Hashtable继承于Dictionary字典,实现Map接口
  2. 键、值都不能是空对象
  3. 多次访问,映射元素的顺序相同
  4. 线程安全
  5. hash算法 ,Hashtable则直接利用key本身的hash码来做验证
  6. 数据遍历的方式 Iterator (支持fast-fail)和 Enumeration (不支持fast-fail)
  7. 缺省初始长度为11,内部都为抽象方法,需要它的实现类一一作自己的实现
  8. 扩容的后为原始长度*2+1。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值