前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HashMap与HashTable区别

HashMap与HashTable区别

原创
作者头像
小明爱吃火锅
发布2023-11-24 18:36:15
1320
发布2023-11-24 18:36:15
举报
文章被收录于专栏:小明说Java小明说Java

相同点: HashMap是Hashtable的轻量级实现(非线程安全的实现),他们都完成了Map接口

不同点:

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

二.同步性:Hashtable是线程安全的, Hashtable的方法是Synchronize的,也就是说是同步的,

?? ?而HashMap是线程序不安全的,不是同步的,如果想要同步,则使用 ConcurrentHashMap?

HashMap在只有一个线程访问的情况下,效率要高于Hashtable

?? ??? ??? ??? ?如果是多线程

?? ? HashTable实现线程安全的代价就是效率变低,因为会锁住整个HashTable,

?? ? 而ConcurrentHashMap做了相关优化,因为ConcurrentHashMap使用了分段锁,并不对整个数据进行锁定,效率比HashTable高很多

三.Value值:只有HashMap可以让你将空值作为一个表的条目的key或value。Hashtable、ConcurrentHashMap都不支持KV为NULL

注意:HashMap的key/value均可以为null,但是TreeMap的key不能为空,value可以为空

其他Map:

(1) LinkedHashMap( LinkedHashMap则记录了插入顺序):LinkedHashMap是HashMap的一个子类,保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,

先得到的记录肯定是先插入的,也可以在构造时带参数,按照访问次序排序。

(2) TreeMap( TreeMap默认升序):TreeMap实现SortedMap接口,能够把它保存的记录根据键排序,默认是按键值的升序排序,也可以指定排序的比较器,

当用Iterator遍历TreeMap时,得到的记录是排过序的。如果使用排序的映射,建议使用TreeMap。

在使用TreeMap时,key必须实现Comparable接口或者在构造TreeMap传入自定义的Comparator,

否则会在运行时抛出java.lang.ClassCastException类型的异常。

我正在参与2023腾讯技术创作特训营第三期有奖征文,组队打卡瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com