[Java] Hashmap的内部实现


原始数据结构

    在记录Hashmap的内部实现之前 先复习下 学校里面学过的一下基本数据结构吧。

    数组

        在简单不过了,在课堂学习的时候,学的最多的就是 数组的寻址和插入了,和java 中的数组没两样,从空间和时间的计算角度看,数组是一个空间优于时间的一种数据结构

    链表

        在学完数组之后,老师一定介绍过可以快速插入的数据结构那就是链表啦,每个节点用 Next的来做链接啦。

    二叉树

        在学完链表之后,老师又教了一种看似高端的数据结构, 那就是二叉树啦,也就是所谓的红黑树,它的优势在于节点数量达到一定级别后检束数度要大于链表。

Hash表

HashMap基于Hash算法,我们通过put(key,value)存储,get(key)来获取。当传入key时,HashMap会根据 key.hashCode()计算出hash值,根据hash值将value保存在bucket里。当计算出的hash值相同时怎么办呢,我们称之为 Hash冲突,HashMap的做法是用链表和红黑树存储相同hash值的value。当Hash冲突的个数比较少时,使用链表,否则使用红黑树。



------------------TBD----------------------


转载于:https://my.oschina.net/u/1041012/blog/608103

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值