hashmap和hashtable concurrenthashmap的区别
答案:2 悬赏:0 手机版
解决时间 2021-04-06 01:20
- 提问者网友:轻浮
- 2021-04-05 07:39
hashmap和hashtable concurrenthashmap的区别
最佳答案
- 五星知识达人网友:不甚了了
- 2021-04-05 07:46
类 HASHMAP
所已实现接口:Serializable, Cloneable, Map
基于哈希表 Map 接口实现实现提供所选映射操作并允许使用 null 值 null 键(除非同步允许使用 null 外HashMap 类与 Hashtable 致相同)类保证映射顺序特别保证该顺序恒久变
类 CONCURRENTHASHMAP
所已实现接口:
Serializable, ConcurrentMap, Map
支持获取完全并发更新所期望调整并发哈希表类遵守与
Hashtable 相同功能规范并且包括应于 Hashtable 每版本尽管所操作都线程安全获取操作
必锁定并且 支持某种防止所访问式锁定整表类通程序完全与 Hashtable
进行互操作取决于其线程安全与其同步细节关
类与 Hashtable 相似与 HashMap 同 允许 null 用作键或值
所已实现接口:Serializable, Cloneable, Map
基于哈希表 Map 接口实现实现提供所选映射操作并允许使用 null 值 null 键(除非同步允许使用 null 外HashMap 类与 Hashtable 致相同)类保证映射顺序特别保证该顺序恒久变
类 CONCURRENTHASHMAP
所已实现接口:
Serializable, ConcurrentMap, Map
支持获取完全并发更新所期望调整并发哈希表类遵守与
Hashtable 相同功能规范并且包括应于 Hashtable 每版本尽管所操作都线程安全获取操作
必锁定并且 支持某种防止所访问式锁定整表类通程序完全与 Hashtable
进行互操作取决于其线程安全与其同步细节关
类与 Hashtable 相似与 HashMap 同 允许 null 用作键或值
全部回答
- 1楼网友:时间的尘埃
- 2021-04-05 08:37
(条理上还需要整理,也是先说相同点,再说不同点)
hashmap是hashtable的轻量级实现(非线程安全的实现),他们都完成了map接口,主要区别在于hashmap允许空(null)键值(key),由于非线程安全,在只有一个线程访问的情况下,效率要高于hashtable。
hashmap允许将null作为一个entry的key或者value,而hashtable不允许。
hashmap把hashtable的contains方法去掉了,改成containsvalue和containskey。因为contains方法容易让人引起误解。
hashtable继承自dictionary类,而hashmap是java1.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
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯