HashMap 和Hashtable 的区别

本文深入探讨了Java中HashMap与Hashtable的区别,包括同步性、null键值支持及实现方式等关键特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

不同点有以下几个:

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

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

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

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


同步与非同步:

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值