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的区别。

  • 相关阅读:
    中国软件技术篇
    create pdf
    我来了
    补丁号
    rdlc里面用VB语法对数值型数据进行Format
    WinForm中有些控件不能添加ToolTip关联的解决方法
    javascript弹出对话框
    省市县关联菜单
    委托与事件
    ASP.NET多文件上传方案
  • 原文地址:https://www.cnblogs.com/www-yang-com/p/10423191.html
Copyright © 2011-2022 走看看