Hashtable和HashMap有什么区别

 
a.  Hashtable 是继承自陈旧的 Dictionary 类的, HashMap 继承自 AbstractMap 类同时是 Java 1.2 引进的 Map 接口的一个实现。
b.  也许最重要的不同是 Hashtable 的方法是同步的,而 HashMap 的方法不是。这就意味着,虽然你可以不用采取任何特殊的行为就可以在一个  多线程的应用程序中用一个 Hashtable ,但你必须同样地为一个 HashMap 提供外同步。一个方便的方法就是利用 Collections 类的静态的 synchronizedMap() 方法,它创建一个线程安全的 Map 对象,并把它作为一个封装的对象来返回。这个对象的方法可以让你同步访问潜在的 HashMap 。这么做的结果就是当你不需要同步时,你不能切断 Hashtable 中的同步(比如在一个单线程的应用程序中),而且同步增加了很多处理费用。
c.  第三点不同是,只有 HashMap 可以让你将空值作为一个表的条目的 key value HashMap 中只有一条记录可以是一个空的 key ,但任意数量的条目可以是空的 value 。这就是说,如果在表中没有发现搜索键,或者如果发现了搜索键,但它是一个空的值,那么 get() 将返回 null 。如果有必要,用 containKey() 方法来区别这两种情况。
d.  HashMap 去掉了 Hashtable contains 方法,保留了 containsValuecontainsKey 方法 
e.  Hashtable hash 数组默认大小是 11 ,增加的方式是 old*2+1 HashMap hash 数组的默认大小是 16 ,而且一定是 2 的指数
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值