码迷,mamicode.com
首页 > 其他好文 > 详细

HashMap和Hashtable

时间:2016-01-04 16:58:29      阅读:260      评论:0      收藏:0      [点我收藏+]

标签:

HashMap和Hashtable都实现了Map接口,HashMap几乎可以等价于Hashtable,它们之间的主要区别在:线程安全性,同步(synchronization),以及速度。

  1. HashMap是非synchronized的,并可以接受null的键值,而Hashtable不行;
  2. Hashtable是synchronized,这意味着多个线程可以共享一个Hashtable;
  3. HashMap的迭代器是fail-fast,而Hashtable的enumerator不是fail-fast:当有其它线程改变了HashMap结构(增删元素),将会抛ConcurrentModificationException,(除了调用迭代器本身的remove方法),但这并不是一个一定发生的行为,要看JVM,这条同样也是Enumeration和Iterator的区别,但其它线程可以通过set方法更改集合对象是允许的,因为这并没有从“结构上”更改集合。但是假如已经从结构上进行了更改,再调用set方法,将会抛出IllegalArgumentException异常(结构上的更改指的是删除或者插入一个元素,这样会影响到map的结构);
  4. 由于Hashtable是synchronized,所以在单线程环境下它比HashMap要慢;
  5. HashMap不能保证随着时间的推移Map中的元素次序是不变的;

HashMap和Hashtable

标签:

原文地址:http://www.cnblogs.com/tianex/p/5099500.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!