美文网首页
HashMap和Hashtable的区别

HashMap和Hashtable的区别

作者: YoungChen_ | 来源:发表于2018-02-25 15:37 被阅读0次

    HashMap和Hashtable的区别

    主要区别有:线程安全性,同步,速度。

    1).HashMap几乎可以等价于Hashtable,除了HashMap是非同步的,并且可以接受null(key和value都可以为null,Hashtable不行)。
    2).HashMap是非同步的,而Hashtable是同步的,这就意味着Hashtable是线程安全的,多个线程可以共享一个Hashtable,而如果没有正确同步的话,
    多个线程是不能共享HashMap的。Java5提出了ConcurrentHashMap,它是HashMap的替代,比HashMap的扩展性更好。
    3).迭代器的区别:HashMap是Iterator是快速失败的(Fail-Fast),而Hashtable是enumerator是安全失败的(Fail-Safe)。
    3.1)遍历过程中若有其他线程对HashMap进行修改(增加删除),会抛出同时修改异常ConcurrentModificationException,快速失败的迭代器是操作集合本身。
    3.2)遍历过程中若有其他线程对Hashtable进行修改(增加删除),不会抛出异常,失败安全的迭代器是操作原集合的一个拷贝。
    4).由于Hashtable是线程安全的也是同步的,所以单线程环境下它比HashMap慢。如果不需要同步,只需要单一线程,那么使用HashMap性能要好过Hashtable。
    5).HashMap不能保证随着时间的推移Map中的元素次序是不变的。

    相关文章

      网友评论

          本文标题:HashMap和Hashtable的区别

          本文链接:https://www.haomeiwen.com/subject/wyyrxftx.html