Map系列底层原理

HashMap(Map):

特点: key,value存储,key可以为null,同样的key会被覆盖掉

存储结构: 底层采用数组、链表、红黑树来实现的。

原理讲解: 哈希算法(也叫散列),就是把任意长度值(Key)通过散列算法变换成固定长度的key(地址) 通过这个地址进行访问的数据结构它通过把关键码值映射到表中一个。位置来访问记录,以加 快查找的速度。

Hashcode:通过字符串算出它的ascii码,进行mod(取模),算出哈希表中的下标

哈希冲突 用链表是来解决数组下标会覆盖的问题,冲突的问题。为什么hashmap 用两个数据结构。两 个数据结构。JDK8 红黑树???

因为链表查询的时候链表过长了查询效率非常低,所以需要用红黑树

ConcurrentHashMap(并发安全map):

特点: 并发安全的HashMap ,比Hashtable效率更高 存储结构: 底层采用数组、链表、红黑树 内部大量采用CAS操作。并发控制使⽤synchronized 和 CAS 来操作来实现的。

1.8之前采用分段锁 1.8之后数据结构和hashmap很相似,采用cas乐观锁和synchronized来优化并发问题

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值