zoukankan      html  css  js  c++  java
  • 坚持第一天:HashMap和Hashtable的区别

    其实,到底是用HashMap和Hashtable主要看需求,

    1.它们俩都共同实现了:Map接口,但是Hashtable实现是基于Dictionary抽象类的,在java5的时候提供了ConcurrentHashMap,来代替Hashtable,主要是比Hashtable的扩展性好。

    不同点:

    1.HashMap的key可以为null(只能有一个把null),value可以有一个或多个null。当get()方法返回null时候,可以表示key或者value的值为null,

    这时候问题来了,在HashMap中不能由get()方法来判断HashMap中是否存在某个key,应该用containsKey()方法来判断。

    而在Hashtable中,无论是key还是value都不能为null。

    2.在线程安全方面:

    HashMap是线程不安全的,也就意味着它的速度快一些。

    相反Hashtable是线程安全的,速度慢一些,以为,他要它是同步的。 

    3.迭代器方面

    HashMap的迭代器(Iterator)是fail-fast迭代器,而Hashtable的enumerator迭代器不是fail-fast的。所以当有其它线程改变了HashMap的结构(增加或者移除元素),将会抛出ConcurrentModificationException,但迭代器本身的remove()方法移除元素则不会抛出ConcurrentModificationException异常。但这并不是一个一定发生的行为,要看JVM。这条同样也是Enumeration和Iterator的区别。

  • 相关阅读:
    区域赛
    kd树的创建和求最近邻
    Fliptile POJ
    第六周作业
    第四次作业
    第三次作业
    第二周作业
    第一次作业
    董雅洁 我的第0次作业
    21 UI_布局 之 线性布局 xml配置方式
  • 原文地址:https://www.cnblogs.com/www-yang-com/p/10423191.html
Copyright © 2011-2022 走看看