HashMap与HashTable比较总结

1.继承的类

首先HashTable产生于JDK1.0,HashMap产生于JDK1.2,看类声明:

public class Hashtable<K,V>
    extends Dictionary<K,V>
    implements Map<K,V>, Cloneable, java.io.Serializable {
public class HashMap<K,V> extends AbstractMap<K,V>
    implements Map<K,V>, Cloneable, Serializable {

其中HashTable多继承了一个Dictionary,但是在Dictionary类注释上有这么一句话,标识其已经废除了,多了一个elements方法,一个contains方法,contains与containsValue方法一样的。

 * <strong>NOTE: This class is obsolete.  New implementations should
 * implement the Map interface, rather than extending this class.</strong>

 

2.键值为null情况

HashTable允许key与value为null的情况,HashTable不允许

 

3.初始化容量与扩容

HashTable初始化容量为11,每次扩容2n+1

HashMap初始化容量为16,每次扩容为原来2倍

如果在创建对象时给定大小,HashTable为指定的大小,HashMap为2的指定的幂次方大小

 

4.线程安全

HashTable为线程安全的,但是已经不推荐使用,要使用用ConcurrentHashMap

HashMap线程不安全

 * Java Collections Framework</a>.  Unlike the new collection
 * implementations, {@code Hashtable} is synchronized.  If a
 * thread-safe implementation is not needed, it is recommended to use
 * {@link HashMap} in place of {@code Hashtable}.  If a thread-safe
 * highly-concurrent implementation is desired, then it is recommended
 * to use {@link java.util.concurrent.ConcurrentHashMap} in place of
 * {@code Hashtable}.

实时内容请关注微信公众号,公众号与博客同时更新:程序员星星

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值