HashMap是如何存值和取值的?

HashMap的put方法存值过程图

在这里插入图片描述
图片来源自网络

1. HashMap存值过程(put方法)
  • 第一步:当往调用put方法向HashMap里增加一个键值对时,会先调用键的hashcode方法,来得到一个hashcode值,然后根据这个值来计算出这个键值对在map中数组对应的下标,及定位到HashMap中的具体的某一个桶。
  • 第二步:判断这个桶是否为空,如果是,直接把对象存到数组里,存储结束;如果不是,转到第三步
  • 第三步:判断已存在对象的key的equals方法,跟需要添加的对象的key对比,是否为true,如果是,覆盖这个key所对应的value,存储结束;如果不为true,转到第四步
  • 第四步:判断这个对象它指向下一个对象的next指针的是不是为空,如果不为空,重复第四步的过程;如果为空,则把该对象的next指针指向要增加的对象,存储结束。
2. HashMap取值过程(get方法)
  • 第一步:调用key的hashcode方法,得到一个返回值,通过返回值定位到map中数组对应的下标,就是定位到HashMap中的具体的某一个桶。
  • 第二步:判断这个桶是否为空,如果是,就结束判断,返回null;如果不是空,就转到第三步。
  • 第三步:判断桶中对象的key值与传入的key值是否相等并且用equals方法判断他们是否为同一个对象,如果判断结果为真,就返回这个对象的value值;如果为假,就转到第四步。
  • 第四步:判断这个对象它指向下一个对象的next指针的是不是为空,如果是空,就结束判断,返回null;如果next指针不是空,就取出它所指对象,重复上面第三步的判断操作,直到取出对应的value值,或者直到桶中的对象被遍历完,返回一个null值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值