您的位置:首页 > 游戏 > 手游 > 教育网站制作设计_网站开发和界面的区别_武汉网站seo推广_外贸seo公司

教育网站制作设计_网站开发和界面的区别_武汉网站seo推广_外贸seo公司

2025/1/9 19:40:17 来源:https://blog.csdn.net/LFY20031120/article/details/145020013  浏览:    关键词:教育网站制作设计_网站开发和界面的区别_武汉网站seo推广_外贸seo公司
教育网站制作设计_网站开发和界面的区别_武汉网站seo推广_外贸seo公司

1、HashMap是线程不安全的,HashTable是线程安全的

  • HashMap:Fail-fast 机制。表示快速失败,在集合遍历过程中,一旦发现容器中的数据被修改了,会立刻抛出ConcurrentModificationException异常,从而导致遍历失败,像这种情况:定义一个Map集合,使用Iterator迭代器进行数据遍历,在遍历过程中,对集合数据做变更时,就会发生Fail-fast。java.util包下的集合类都是快速失败机制的, 常见的的使用Fail-fast方式遍历的容器有HashMap和ArrayList等。
  • HashTable:公开的方法比如get都使用了synchronized描述符。而遍历视图比如keySet都使用了Collections.synchronizedXXX进行了同步包装。并且是锁住全局的

Fail-fast底层实现:

迭代器在遍历集合的过程,会维护一个modCount变量。如果在遍历过程modCount发生变化,在迭代器使用hasNext/next遍历下一个元素的时候,都会检测modCount是否为expectedModCount的值,如果不是抛出异常。

2、由于线程安全,HashTable效率比不上HashMap

3、HashMap允许键为NULL,值为NULL。HashTable都不允许

HashMap是支持null键和null值的,而HashTable在遇到null时,会抛出NullPointerException异常。这并不是因为HashTable有什么特殊的实现层面的原因导致不能支持null键和null值,这仅仅是因为HashMap在实现时对null做了特殊处理,将null的hashCode值定为了0,从而将其存放在哈希表的第0个bucket中。

4、HashMap默认初始化数组大小是16,HashTable是11。HashMap扩容是扩大两倍,HashTable是两倍+1

5、HashMap不能直接使用hashCode计算下标,而是使用hashCode重新计算Hash值,再计算下标。HashTable使用的是hashCode计算下标(取mod)

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com