HashTable与HashMap

  1. 继承的父类不同
HashTable继承Dictionary类
HashMap继承AbstractMap类
不过都实现了Map,Cloneable(可重复),Serializable(可序列化)
  1. 对外提供的接口不同

HashTable比HashMap多提供了elments()和contains()两个方法
elments()方法继承自HashTable的父类Dictionary,elments()方法返回HashTable中的value的枚举
contaions()方法判断该HashTable是否包含传入的value

  1. 对Null key和null value的支持不同
HashTable即不支持Null key也不支持Null value
    key为Null时,调用Put方法,需要获取key的HashCode就会报错
    value为空是,hashTable对其做了限制,当value为空时直接排除异常    HashMap中支持Null key也支持Null value
  1. 线程安全性不同
   HashTable是线程安全的,他的每一个方法都加入了Synchronize方法,在多线程的并发的环境下,可以直接使用HashTable,不需要自己为他的方法实现同步
   HashMap是线程不安全的,在多线程的并发环境下,可能会产生死锁等问题,使用HashMap需要自己添加同步
   但是HashMap的效率会比HashTable好很多,在多线程可以使用ConcurrentHashMap他的效率比HashTable快很多,因为ConcurrentHashMaps使用的分布锁,并不把整个数据锁定
  1. 初始容量大小和每次扩容大小不同
   HashTable默认初始化11,每次扩容2n+1,
       HashTable主要是为了让结果更加均匀,减少哈希冲突,   
   HashMap初始化16,每次原来的2倍
      HashMap管局Hash的计算效率问题,为了加快速度,将哈希表大小固定位2的幂,分布不均匀,
      HashMap为了解决分布不均匀又对Hash算法做了一些改动,这导致HashTable与HashMap算法不同
  1. hash算法不同

没有多余介绍

  • HashTable

     	优点:
         线程安全,每个方法都继承了Synchronize方法,(但是可以是用ConcurrentHashMap,比HashTable的效果好)
         减少了hash冲突    
     缺点:
         速度相对来说 
    
  • HashMap

      优点:
          效率高        支持Null key 与 value(方便)
         (好像相对来说就这一个)
      缺点
        线程不安全
         分布不均匀,但是做过改动
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值