java中HashMap、HashTable、CurrentHashMap的区别

               java中HashMap、HashTable、CurrentHashMap的区别

首先我们要知道有两种形式的集合。继承于collection接口的集合,继承于map的接口的集合。

我们这里讨论的都是继承map接口的结合,以(key,value)的形式存储数据。实际上后缀是map的集合类最终实现的都是

map接口。

HashMap是我们比较常用的数据结构,我们可以通过HashMap的用迭代器(iterator)方法得到迭代器来进行遍历HashMap

或者用foreach遍历HashMap。HashMap在jdk1.7中底层采用的是链表拉链法,1.8中采用的数据结构是红黑树。HashMap

允许有null值。key或者value可以为空。但是HashMap是线程不安全的,多个线程对HashMap进行写操作的时候,可能会

出错。

Hashtable可以用迭代器(iterator)方法得到迭代器来进行遍历hashtable,或者用foreach遍历Hashtable。Hashtable是线程

安全的。不允许有空值。我们看Hashtable的源码可以知道在set,get函数等会有同步锁。保证线程安全

 

ConcurrentHashMap是在Java 5提供的,ConcurrentHashMap是对hashtable的改进,ConcurrentHashMap除了拥有

Hashtable的操作,还在性能上进行优化,因为Hashtable在同步时锁住整个map,而ConcurrentHashMap只锁住了

要操作的部分。所以在数据量很大的时候,可以感觉到ConcurrentHashMap的处理效率是远高于Hashtable的。

总结:在数据量较小,不追求性能的情况下,用哪种数据结构都可以,可以在多线程情况下用HashMap,我们手动上

个锁就ok,也可以用Hashtable或者ConcurrentHashMap。

在要处理的数据量较大,要求处理效率的时候,在单线程的情况下,HashMap的处理效率是最快的,所以HashMap是

优先选择。在多线程的情况下,建议用ConcurrentHashMap代替Hashtable。

 

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值