HashMap 和Hashtable 的区别

来源:互联网 发布:js利用gettime() 月 编辑:程序博客网 时间:2024/06/11 13:17

不同点有以下几个:

第一:HashMap不是同步的,Hashtable是同步的。

第二:HashMap允许使用null值和null键,Hashtable不允许。

第三:HashMap把Hashtable的contains()方法去掉。

第四:HashMap是Java1.2引进的Map接口的一个实现,HashTable继承自Dictionary类,也实现了Map接口。


同步与非同步:

如果多个线程同时访问Hashtable,HashTable不需要自己为它的方法实现同步。

如果多个线程同时访问一个哈希映射,而其中至少一个线程从结构上修改了该映射,则它必须 保持外部同步。(结构上的修改是指添加或删除一个或多个映射关系的任何操作;仅改变与实例已经包含的键关联的值不是结构上的修改.)这一般通过对自然封装该映射的对象进行同步操作来完成。如果不存在这样的对象,则应该使用 Collections.synchronizedMap方法来“包装”该映射。最好在创建时完成这一操作,以防止对映射进行意外的非同步访问,如下所示:  

Map m =Collections.synchronizedMap(new HashMap(...));

原创粉丝点击