【HashMap】HashMap底层数据结构

10分钟学会HashMap底层视频分析<点击>

HashMap:散列表集合,实现了Map接口,Map又实现了Iterator接口。遍历Map可以用Iteratoer实现,也可以用Entry(HashMap内部类)实现

两种实现方式:
while(iterator.hasNext)
for(map.Entry entry : map.getEntrySet())


数据结构:数组+链表
数组:存储区间是连续的,占用内存大,存慢,取值快;
链表的存储区间离散,占用内存宽松,增值快,取值慢;
两者结合起来,就实现了HashMap:存、取都很快。


那么,两者具体是怎么结合的呢?
HashMap里有一个数组Node<K,V>[]默认16个,存储的K、V、hash、next(Node)。(Node<K,V>实现了Entry<K,V>接口,它其实就是一个Entry)

put(K,V)——>根据K算出下标i,键值对存在i处,newNode(hash,key,value,next)形成一条数据链,

get(K)——>getNode(hash,key),根据key算出下标i,取出i位置的Node<K,V>,比较hash,如果相同就直接返回,如果不同继续next,直到没有next了为止。
<数组默认16个>
(0) En

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值