hashmap与hashtable的区别
博客专区 > leiline 的博客 > 博客详情
hashmap与hashtable的区别
leiline 发表于5个月前
hashmap与hashtable的区别
  • 发表于 5个月前
  • 阅读 6
  • 收藏 0
  • 点赞 0
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

hashMap与hashtable都实现了map接口,但是他们之间是有区别的。主要的区别在于:线程安全性,同步以及执行速度。

一般来说,hashmap和hashtable是等价的,但它们之间有以下几个区别:

  • hashmap是非synchronized,hashtable是synchronized。所以,hashtable是线程安全的,多个线程共享一个hashtable;而hashmap是线程不安全的。

  • hashtable是线程安全的,所以在单线程环境下hashmap要慢一些。如果不需要同步,只需要单一线程,那么hashmap要比hashtable更好一些。

  • hashmap不能保证随着时间的推移map中的元素次序是不变的。

如果需要使用多线程,可以使用ConcurrentHashMap来替代HashTable

  • sychronized意味着在一次仅有一个线程能够更改Hashtable。就是说任何线程要更新Hashtable时要首先获得同步锁,其它线程要等到同步锁被释放之后才能再次获得同步锁更新Hashtable。

  • Fail-safe和iterator迭代器相关。如果某个集合对象创建了Iterator或者ListIterator,然后其它的线程试图“结构上”更改集合对象,将会抛出ConcurrentModificationException异常。但其它线程可以通过set()方法更改集合对象是允许的,因为这并没有从“结构上”更改集合。但是假如已经从结构上进行了更改,再调用set()方法,将会抛出IllegalArgumentException异常。

  • 结构上的更改指的是删除或者插入一个元素,这样会影响到map的结构。

共有 人打赏支持
粉丝 4
博文 48
码字总数 11653
×
leiline
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: