HashMap和HashTable的区别

HashMap与HashTable都是Java中实现Map接口的类,但HashMap是非线程安全且允许空键值,而HashTable则线程安全且不允许空键值。HashMap在单线程环境下效率更高,不包含contains方法,而是提供了containsValue和containsKey。两者在历史、同步性和值的使用上存在差异,HashTable适合多线程环境,HashMap更适合高并发的单线程环境。

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

HashMap和HashTable的区别

HashMap和HashTable的区别

(条理上还需要整理,也是先说相同点,再说不同点),HashMap是HashTable的轻量级实现(非线程安全的实现) ,他们都完成了Map接口,主要区别在于HashMap允许空( null )键值( key ),由于非线程安全,在只有一个线程访问的情况下,效率要高于Hashtable,HashMap允许将null作为一个entry的key或者value ,而Hashtable不允许。

HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey,因为contains方法容易让人引起误解。Hashtable继承自Dictionary类,而HashMap是Javal.2引进的Map interface的一个实现。

最大的不同是, Hashtable的方法是Synchronize 的,而HashMap不是,在多个线程访问Hashtable时,不需要自己为它的方法实现同步,而HashMap就必须为 之提供外同步。
Hashtable和HashMap采用的hash/rehash算法都大概一样,所以性能不会有很大的差异。就HashMap与HashTable主要从三方面来说:

一·历史原因:Hashtable是基于陈旧的Dictionary
类的, HashMap是Java 1.2引进的Map
接口的一个实现

二、同步性:Hashtable是线程安全的,也就是说是同
步的,而HashMap是线程序不安全的,不是同步的。

三、
值:只有HashMap可以让你将空值作为一个表的条目的
key或value.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋风清,秋月明。落日夕阳一片红

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值