首页
题库
面试
求职
学习
竞赛
More+
所有博客
搜索面经/职位/试题/公司
搜索
我要招人
去企业版
登录 / 注册
首页
>
试题广场
>
HashMap和Hashtable有什么区别?
[问答题]
请你说明HashMap和Hashtable的区别?
查看答案及解析
添加笔记
求解答(0)
邀请回答
收藏(39)
分享
纠错
11个回答
添加回答
2
aud
HashTable 使用 synchronized 来进行同步,线程安全。
HashMap 可以插入键为 null 的 Entry。
HashMap 的迭代器是 fail-fast 迭代器。
HashMap 不能保证随着时间的推移 Map 中的元素次序是不变的。
发表于 2019-03-14 21:19:23
回复(0)
1
暖神大大
主要的区别有:线程安全性,同步(synchronization),以及速度。
HashMap几乎可以等价于Hashtable,除了HashMap是非synchronized的,并可以接受null(HashMap可以接受为null的键值(key)和值(value),而Hashtable则不行)。
HashMap是非synchronized,而Hashtable是synchronized,这意味着Hashtable是线程安全的,多个线程可以共享一个Hashtable;而如果没有正确的同步的话,多个线程是不能共享HashMap的。Java 5提供了ConcurrentHashMap,它是HashTable的替代,比HashTable的扩展性更好。
另一个区别是HashMap的迭代器(Iterator)是fail-fast迭代器,而Hashtable的enumerator迭代器不是fail-fast的。所以当有其它线程改变了HashMap的结构(增加或者移除元素),将会抛出ConcurrentModificationException,但迭代器本身的remove()方法移除元素则不会抛出ConcurrentModificationException异常。但这并不是一个一定发生的行为,要看JVM。这条同样也是Enumeration和Iterator的区别。
由于Hashtable是线程安全的也是synchronized,所以在单线程环境下它比HashMap要慢。如果你不需要同步,只需要单一线程,那么使用HashMap性能要好过Hashtable。
HashMap不能保证随着时间的推移Map中的元素次序是不变的。
发表于 2019-04-25 19:34:57
回复(1)
1
听风听雨
hashmap和hashtable都实现了map接口,前者是线程不安全,操作速度较快,后者线程安全,操作速度较慢。前者允许键值为空,后者不允许。前者迭代器为快速十八迭代器
发表于 2019-02-21 14:34:00
回复(0)
1
Buffoon丶果
HashMap :非同步,速度快,key/value允许为null
Hashtable:
同步 , 速度慢,
key/value不允许为null
发表于 2019-02-26 11:23:37
回复(0)
0
可乐多加点冰
HashMap线程不安全允许null值null键
HashTable使用
synchronized 来进行同步,线程安全,不允许null值null键
HashMap的操作速度比HashTable的操作速度快
发表于 2020-07-10 12:01:31
回复(0)
0
woli莹
两者最主要的区别在于Hashtable是线程安全,而HashMap则非线程安全。
发表于 2019-05-13 16:04:11
回复(0)
0
江畔8670
HashTable 使用 synchronized 来进行同步,线程安全。 HashMap 可以插入键为 null 的 Entry。 HashMap 的迭代器是 fail-fast 迭代器。 HashMap 不能保证随着时间的推移 Map 中的元素次序是不变的。
发表于 2019-04-30 19:08:22
回复(0)
0
西瓜同学🏀
haspmap允许键和值为null,hashtable不允许。 haspmap不是同步的,hashtable是同步的。 hashmap适合单线程,hashtable适合多线程
编辑于 2019-04-28 19:22:55
回复(0)
0
九零二w
HashTable不允许null值(key和value都不可以),HashMap允许null值(key和value都可以)。
发表于 2019-04-27 17:04:13
回复(0)
0
茹(๑•.•๑)
HashMap允许键和值是null,而Hashtable不允许键或者值是null。 Hashtable是同步的,而HashMap不是。因此,HashMap更适合于单线程环境,而Hashtable适合于多线程环境。 HashMap提供了可供应用迭代的键的集合,因此,HashMap是快速失败的。另一方面,Hashtable提供了对键的列举(Enumeration)。 一般认为Hashtable是一个遗留的类。
编辑于 2019-04-27 13:45:25
回复(0)
0
L刘刘刘
HashTable 使用 synchronized 来进行同步,线程安全。
HashMap 可以插入键为 null 的 Entry。
HashMap 的迭代器是 fail-fast 迭代器。
HashMap 不能保证随着时间的推移 Map 中的元素次序是不变的。
发表于 2019-04-25 20:36:44
回复(0)
这道题你会答吗?花几分钟告诉大家答案吧!
提交观点
问题信息
Java
Java工程师
上传者:
小小
难度:
11条回答
39收藏
2100浏览
热门推荐
相关试题
数据链路层滑动窗口机制中发送窗口(...
网络基础
评论
(1)
供受文者使用的具有法定效用的正式文...
京东
产品运营
2018
常识判断
行政
评论
(1)
有关linux线程的描述,正确的是...
京东
Java工程师
C++工程师
iOS工程师
安卓工程师
运维工程师
前端工程师
算法工程师
PHP工程师
2018
评论
(1)
用一种动物介绍你自己
通用能力
评论
(1)
请你说几个海量数据存储常见问题以及...
评论
(1)
扫描二维码,关注牛客网
意见反馈
下载牛客APP,随时随地刷题