文档章节

hashmap与hashtable的区别

leiline
 leiline
发布于 2017/09/03 16:06
字数 396
阅读 7
收藏 0

hashMap与hashtable都实现了map接口,但是他们之间是有区别的。主要的区别在于:线程安全性,同步以及执行速度。

一般来说,hashmap和hashtable是等价的,但它们之间有以下几个区别:

  • hashmap是非synchronized,hashtable是synchronized。所以,hashtable是线程安全的,多个线程共享一个hashtable;而hashmap是线程不安全的。

  • hashtable是线程安全的,所以在单线程环境下hashmap要慢一些。如果不需要同步,只需要单一线程,那么hashmap要比hashtable更好一些。

  • hashmap不能保证随着时间的推移map中的元素次序是不变的。

如果需要使用多线程,可以使用ConcurrentHashMap来替代HashTable

  • sychronized意味着在一次仅有一个线程能够更改Hashtable。就是说任何线程要更新Hashtable时要首先获得同步锁,其它线程要等到同步锁被释放之后才能再次获得同步锁更新Hashtable。

  • Fail-safe和iterator迭代器相关。如果某个集合对象创建了Iterator或者ListIterator,然后其它的线程试图“结构上”更改集合对象,将会抛出ConcurrentModificationException异常。但其它线程可以通过set()方法更改集合对象是允许的,因为这并没有从“结构上”更改集合。但是假如已经从结构上进行了更改,再调用set()方法,将会抛出IllegalArgumentException异常。

  • 结构上的更改指的是删除或者插入一个元素,这样会影响到map的结构。

本文转载自:http://www.importnew.com/7010.html

共有 人打赏支持
leiline
粉丝 4
博文 49
码字总数 11653
作品 0
烟台
【JAVA学习】——hashmap和hashtable的区别

HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别。主要的区别有:线程安全性,同步(synchronization),以及速度。 1、HashMap几乎可以等价于Hashtable,除了...

fjj15732621696
2017/10/29
0
0
HashMap和Hashtable的区别

HashMap和Hashtable的比较是Java面试中的常见问题,用来考验程序员是否能够正确使用集合类以及是否可以随机应变使用多种思路解决问题。HashMap的工作原理、ArrayList与Vector的比较以及这个问...

LCZ777
2014/03/29
0
0
Java中HashMap和HashTable区别

前几天被一家公司电面的时候被问到HashMap和HashTable的区别,当时就懵逼了,hashTable是个啥?从来没用过啊,于是电面完之后马上google了一把,这回涨姿势了; HashMap和HashTable同属于Jav...

Panshuyang
2016/03/23
107
0
集合——HashMap和Hashtable的区别

HashMap和Hashtable都实现了Map接口,但决定用哪一个之前先要弄清楚它们之间的分别。主要的区别有:线程安全性,同步(synchronization),以及速度。 HashMap几乎可以等价于Hashtable,除了H...

亚特兰缇斯
2015/03/03
0
0
hashmap实现原理浅析

看了下JAVA里面有HashMap、Hashtable、HashSet三种hash集合的实现源码,这里总结下,理解错误的地方还望指正 HashMap和Hashtable的区别 HashSet和HashMap、Hashtable的区别 HashMap和Hashtab...

商者
2016/03/30
37
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

es6

在实际开发中,我们有时需要知道对象的所有属性,原生js给我们提供了一个很好的方法:Object.keys(),该方法返回一个数组 传入对象,返回属性名 var obj = {'a':'123','b':'345'};console.l...

不负好时光
23分钟前
0
0
叮!您收到一份超值Java基础入门资料!

摘要:Java语言有什么特点?如何最大效率的学习?深浅拷贝到底有何区别?阿里巴巴高级开发工程师为大家带来Java系统解读,带你掌握Java技术要领,突破重点难点,入门面向对象编程,以详细示例...

全部原谅
25分钟前
0
0
web.xml容器加载顺序

容器对于web.xml的加载过程是context-param >> listener >> fileter >> servlet

Aeroever
27分钟前
1
0
Docker容器日志查看与清理

1. 问题 docker容器日志导致主机磁盘空间满了。docker logs -f container_name噼里啪啦一大堆,很占用空间,不用的日志可以清理掉了。 2. 解决方法 2.1 找出Docker容器日志 在linux上,容器日...

muzi1994
28分钟前
0
0
J2Cache 和普通缓存框架有何不同,它解决了什么问题?

不少人看到 J2Cache 第一眼时,会认为这就是一个普普通通的缓存框架,和例如 Ehcache、Caffeine 、Spring Cache 之类的项目没什么区别,无非是造了一个新的轮子而已。事实上完全不是一回事!...

红薯
31分钟前
484
14

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部