Hashtable&HashMap比较

Hashtable 是 Dictionary 的子类,HashMap 是 Map 接口的一个实现类
 
HashTable 的应用非常广泛,HashMap 是新框架中用来代替 HashTable 的类,也就是说建议
使用 HashMap,不要使用 HashTable。可能你觉得 HashTable 很好用,为什么不用呢?这里
简单分析他们的区别。
1.HashTable 的方法是同步的,HashMap 未经同步,所以在多线程场合要手动同步 HashMap
这个区别就像 Vector 和 ArrayList 一样。
 
2.HashTable 不允许 null 值(key 和 value 都不可以),HashMap 允许 null 值(key 和 value 都可以)。
HashMap 允许 key 值只能由一个 null 值,因为 hashmap 如果 key 值相同,新的 key, value 将
替代久的。
 
3.HashTable 有一个 contains(Object value),功能和 containsValue(Object value)功能一样。
 
4.HashTable 使用 Enumeration,HashMap 使用 Iterator。
 
以上只是表面的不同,它们的实现也有很大的不同。
 
5.HashTable 中 hash 数组默认大小是 11,增加的方式是  old*2+1。HashMap 中 hash 数组的
默认大小是 16,而且一定是 2 的指数。
 
6.哈希值的使用不同,HashTable 直接使用对象的 hashCode
 
以上只是一些比较突出的区别,当然他们的实现上还是有很多不同的,比如
HashMap 对 null 的操作。
 
HashMap 可以看作三个视图:key 的 Set,value 的 Collection,Entry 的 Set。这里 HashSet 就
是其实就是 HashMap 的一个视图。HashSet 内部就是使用 Hashmap 实现的,和 Hashmap 不
同的是它不需要 Key 和 Value 两个值。
HashMap 为散列映射,它是基于 hash table 的一个实现,它可在常量时间内安插元素,或找出一
组  key-value  pair.HashSet  为散列集,它把查找时间看的很重要,其中所有元素必须要有
hashCode()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值