您的位置:首页 > 编程语言 > Java开发

[Java] Hashmap的内部实现

2016-01-22 00:00 369 查看

原始数据结构

在记录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----------------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: