java源码系列:HashMap源码验证,自己手写一个HashMap之01-基本框架

那讲的这些知识点能不能用代码来实现,接下来就给大家来表演一下铁锤炸弹,我们用源码验证,

也就是刚才在这里给大家画这个过程,我希望用源码,用我自己手写一个hashmap,

来给大家,去把这个源码这个过程,全部给大家去讲透讲明白,让大家也就是说,

把讲的这个过程也能用源码来验证。

写Map接口

定义map接口

首先呢,我们在这里呢,定义为一个map,一个interface这个接口,大家知道啊,

我们这个hashmap,它底层呢,也是实现于map这个接口,所以在这里呢,

我们要定义它的这个接口,map它是key、value形式的存储,

所以在这个地方呢,我们也是一样要支持它的key、value的这个泛型的一个支持,

所以在这里呢,我们定义为key、value的泛型。

put、get、size方法

然后呢,我们这个map里面有哪几个方法呢?

首先有一个put方法,对吧?这个put方法对应的,当然还有一个get的方法,

那我们的put方法呢,它是可以通过传我们的key和value需要保存。

然后我们的get方法是通过传我们的key,返回得到我们的value,

然后呢,我们还有一个size方法,这个size方法就返回我们当前这个map的一个容量。

Entry接口定义

但我们这里呢,还要定义一个呢,还要定义一个interface Entry<K,V>,为什么要定义?

其实原因我在这也可以给大家说一下,就是我们在这定一个的目的,是让我们实现这个接口,

按我们这个规范,因为接口它实际就是规范。

好,我们现在在这里呢,就把这个getKey,和我们的getValue,这两个方法给大家来梳理一下。

写HashMap类

好,那同样我们现在这里呢,就已经把这样的一个过程呢,定义了一个接口,

那接下来呢,我们就来写具体的实现。

那所以我们在这里定义一个HashMap,那我们的HashMap呢,它也是支持泛型的,

它实现我们的Map接口对吧,然后呢,我们去实现它的这个方法,

OK,那刚刚在这里呢,我们还要定义一个class,它是一个内部类叫Entry对象,

然后它去实现我们刚才在这个Map接口里面,定义的Entry接口,然后对它进行实现。

好,那整个的一个框架,已经给大家去梳理了,那接下来就是我们去干什么呢?

我们去手写实现。接下来就把整个这个代码过程,把put和get的方法全部给大家梳理一遍。

也就是说已经给大家把这个HashMap这个框架已经整理好了,那接下来就是把每个方法的实现,

给大家去实现。好,大家想不想看,马上给你们表演铁锤炸弹、胸口碎大石。

定义成员属性

那刚刚我们讲过啊,我们在这里呢,它是一个数组对吧,那数组的话我们应该怎么去定义呢?

无非就是用这个中括号来进行代替。那么我想问一下,那我这个数组它的类型是什么?

这个类型是不是Object。我们这个Object是不是在这里,就是我们每一个节点都是一个Object,

而这个Object我现在定义什么?

我们现在定义为Entry吧,所以在这里呢,实际它就是一个Entry对象。

OK,所以在这里呢,我把它设置为空,如果要对它进行初始化,在我的这个构造方法的时候,

就对它进行初始化,table等于咱们这个Entry这个数组,然后呢,我们定义为容量多少,

定义为16。那我们现在在这里就已经定义了这个值,然后呢,我们还定义一个size等于0,

然后在这里呢,我们返回这个size对吧

 好这里呢,就是我们的一些成员属性,定义好了。

好今天就到这里,整个的一个框架,已经给大家去梳理了,属性也定义了!

下一篇介绍 写put方法的思路、存储出现哈希冲突等情况

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

被开发耽误的大厨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值