理解ConcurrentMap

本文介绍了Java中线程安全的Map接口实现,包括ConcurrentMap、ConcurrentHashMap和ConcurrentSkipListMap的特点及应用场景。对比了HashMap与TreeMap的实现原理,并讨论了它们之间的主要区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.在jDK 5开始增加了线程安全的Map接口  ConcurrentMap

2.Hashtable是JDK 5之前唯一线程安全的内置实现。特别说明的是Hashtable的t是小写的,原因(暂不明确),

ConcurrentHashMap是HashMap的线程安全版本,ConcurrentSkipListMap是TreeMap的线程安全版本。

ConcurrentHashMap和ConcurrentSkipListMap应尽量多的使用。

HashMap的原理:

 我们从头开始设想,要将对象存放在一起,如何设计这个容器。有两条路可走,一种是采用分格技术,每一个对象存放于一个格子中没这样通过对格子的编号就能取到或者遍历对象;另一种技术就是采用串联的方式,各个对象串联起来,这需要各个对象至少带有下一个对象的索引。显然第一种就是数组的概念,第二张就是链表的概念,所有的容器的实现其实都是基于这两种方式的,不管是数组还是链表,或者二者具有。  HashMap就是采用的数组方式。

有了存取对象的容器后还需要以下两个条件才能完成Map所需的条件。

  1.能够快速定位元素:Map的需求就是能够根据一个查询条件快速得到需要的结果,所以这个过程需要的就是尽可能的快

   2.能够自动扩充容量:显然对于容器而然,不需要人工的去控制容器的容量是最好的,这样对于外部使用来说越少知道底部细节越好,不仅使用方便,也越安全。

 3.TreeMap和HashMap的区别和共同点

    1.实现:TreeMap:SortMap接口,基于红黑树,HashMap基于哈希散列表实现。

    2.存储:TreeMap:默认按键的升序排序,HashMap是随机存储

    3.遍历:TreeMap:Iterator遍历是排序的,HashMap是随机的

    4.性能损耗:TreeMap插入和删除

    5.键值对:TreeMap:键、值都不能为null    HashMap只允许键值都为null

    6.效率:TreeMap:效率低   HashMap:效率高。

转载于:https://www.cnblogs.com/woniufei/p/9506416.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值