00:00
各位,我们就来实际的操作一下,现在呢,我们把谷歌公司提到这个商机体,那么完成一下具体要求再看一下啊,当有一个公司有新员工来报到时候,要求把员工信息加入有ID,有性别,有年龄,有住址,那么待会我们实现的时候呢,我们取一个ID,再取一个呃名字就可以了,好吧,像这个性别年龄呢,我们就不要了,我们就留一个名字就行,好吧,留一个名字这样子简化一下,因为这个ID是我们的关键嘛。那我们刚才提的要求也很简单,不使用数据库,速度越快越好,我们就用哈希表。好,那么添加的时候呢,我们保证按照ID从低到高的这个顺序来插入,OK,好,那现在呢,我们还是先做一个思路分析,我们画一个图来分析一下如何用哈希表来保存我们这个雇员的,呃,保存所有的雇员,而且能提高我们的效率,打开我们的Excel表。我们来分析一下这个哈希表。就说使用。
01:01
是用哈希表来管理,管理什么呢?管理这个雇员信息。雇员信息,因为哈希比较都在内存嘛,所以它的速度呢还是非常快的,来吧同学们,我们给大家走一个,首先呢,刚才我们讲过,它应该会有一个数组。是不是是不是有四个有是一个数组,假设我们这个代表数组,那数组里面呃有几几个元素呢?我们假定我们有七条,有七个元素。好,这是我们的第一个元素,我换一个颜色。好,同学们,这是第一个。第二个。第三个第四个第五个第六个第七个。好,我们一共有七个,那现在我把这七个呢给大家排一下。待会儿我要有用哈,各位同学,待会儿我有用。好的,那这个不够了,我们往下拉一下。对不对,好,这边再来一个。
02:02
好的,这边再来一个同学们可以看到呢,现在我一共有对不对,我现在一有七个七个元素,1234567没问题,那么每一个元素它是一个什么内容呢?各位同学,它是一个链表。它是一个链表,也就是说他这地方存的是。比如说我们按雇员的话呢,就是employee啊。Link的list。它是一个链表。这个大家明白这个列表,它这个链表指向什么呢?各位同学,它指向的是我们的雇员信息。比如说这边就是我们的雇员。大家看清楚,这是我们的雇员,好,这是我们的雇员信息,那就是一个什么节点呢?各位同学,就是一个employee。假,假定是EP啊,那它有多少个节点呢?不知道,假如我们画上三个吧,画上四个。
03:04
好,同学们可以看到。OK。它是雇员信息嘛,对不对,我让他形成一个链表,那我们这个链表呢,里面肯定会有一个投子针,这是肯定的,对不对,这个是肯定的害的投掷针它指向哪里,它指诶这个地方没有。画好啊。这个投指针呢,它就指向我们的。直接就指向我们的雇员了,那当然这个指向下一个雇员。当然,这个指向在下一个公园。对不对,这个指向再下一个孤影。是吧,好,同样你既然第一个链表可以指这些,那其他是不是以此类推啊?是不是也就意味着我们下面呢?这七个链表啊,下面的几个呢,也可以指向自己的链表。
04:01
是这意思吧,同学们,也就是说这样子呢,我们可以又画一个列表出来,由谁指向呢?有下面的。这个employee list。来指向。同样的道理。我们下面还有。是不是还有啊,我我就不画那么多了啊,我就画上三条就可以了。也就是说,也也就是什么意思呢?诶,我把这个线线化成。画成一个别的颜色啊,这个线画成画成换一个,换一个颜色吧,换一个颜色。这个颜色呢,给它区分一下是不是,同学们好,那当然下面还有七条,我就不一个画了,好吧,那就说这是一个数组,这个数组里面的元素呢,是一个链表,链表指向的是固原,那同学们我们先分析一把。既然你是雇员,这个没得说,那既然你是雇员的话呢,这个地方就是employee employee里面有什么信息呢。各位同学,这个里面信息肯定有ID了,我就简写啊,有ID有名字。
05:06
对不对,有他的地址等等。Address等等,我就不写那么多,好,我就简写这么三个,简写这么三个,那就说咱们每一个同学们。每一个这这个employee呢,就是这么一个信息,那嗯,那这个链表长什么样子呢?好,我们把这个链表分析出来,链表呢肯定也是一个类,这个没什么可说的,是不是链表也是一个类class。就是我们看到这个链表,这个链表既然是一个类,它有至少要有个什么呢?它至少有一个投掷针指向。我们的第一个雇员,因此呢,我们这应该至少有个employee。Employee employee,它是一个投资层,初始化呢为空。是不是也就是说我们每一个链表呢,有个投资人,它指向谁,这是个投资人啊投。
06:05
陶子珍。投指针指向什么呢?指标指向它的第一个元素。爱指向。指向当前链表的第一个雇员。明白我的意思。好,这是这个,那同样我们还少一个什么呢?哈希表在哪里呢?哈希表就是这个蓝色的框框,它是一个数组,也就是说哈希表其实里面装了什么东西呢?装了一个。装了一个数组,而这个数组呢,它的每一个元素是指向了一条链表的,所以说这里面我们再写一个类,这才是我们的哈希table。OK,那这个哈希table里面。至少有个什么东西呢,它至少有一个这样的数组,这个数组我们写出来啊,叫employee。Link的历史的这个数组对吧,所以说我这个取个名字叫employee link的历史的R。
07:08
那这个里面有多少多少条数组呢?就是七个,也就是说,也就是什么意思,这个链表它其实就指向。这个蓝色的框框。蓝色的框框,而我们的每每一个链表呢,又指向这里,投资人跟它是连起来的,就是我们每一个链表呢,它是一个employee link的历史的对象。啊,这个投资人看到没有,也就说他们之间的关系是这个投资人跟他是关联的。大家看懂了没有?好,也就是待会我们要建的,要用哈希比来建立,共有呢,至少需要创建这么几个类,一个是employee类,它有这些属性,一个是employee link的list,就是链表。那么还有一个哈希表,哈希table呢?它是一个数组,里面管理了七条链表。
08:00
好,那当然这里面我们待会儿要写的就是这里面会提供我们相关的相关的对雇员的。雇员的操作,操作什么操作呢?比如说添加,比如说便利,比如说。查询,比如说删除,那么这几个操作呢,我们肯定不会。直接通过这个链表来操作,而是通过哈希来操作的,也就是说我们这些操作呢,最终在调用的时候还是通过哈希table。来调用,因为只有哈希table才知道我们应该操作哪一条链表。对不对,所以说这个哈希table里面呢,至少还有个散列函数。这个散列函数很重要,它可以,它可以决定我们这个关键的ID,它应该是对应到哪一条链表,它的作用是干什么呢?决定。
09:00
OK,决定这个ID对应到对应到哪个数组啊,哪个哪个这个哪哪个链表。所以哪个里面就是我们这个数组里面的第几个元素。好,同学们。那关于。那关于我们这个使用哈希表来管理雇员的思路分析,我就到这儿,一会儿呢,我们就根据这个图把我们的代码实现完成我们的添加,也就也就是创建便利,也就是显示find的就是查找。删除了,我看情况删除呢,我想留给同学们去做好吧,也就是说我们在对这个链表操作的时候呢,我们就按照刚才分析的这条思路依次实现制。这样呢,我们就可以看到,在实现过程中,你会看到哈希表的一个妙用。OK,好,同学们,我们关于哈希表来创建雇员的思路分析就到这里。
我来说两句