温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:00
那么这样的话呢,我们通过这两行代码就可以去遍利集合了,那到底这个操作has next和next方法都做什么事了,怎么去理解它这块我们画了一个图,通过这个图的话呢,咱们来说明一下,这个呢,也有必要呢,让大家去理解一下,因为以后呢,咱们还有像你便利数据库中的表是吧,也会有类似的这样的一些逻辑啊,讲完这个以后呢,你后边再看这些逻辑的话呢,也会更清楚啊举个例子,这儿呢,就好比是咱们这个当前集合,就是这里边这个CL了啊,我这呢放了这样的六个元素,嗯,然后这个叫C,咱们调了一下叫特,这个方法返回了一个ter的一个迭代器对象,然后这个对象呢,咱们调了这个叫has next。啊,首先明确一下,当我们返回这个特对象的时候呢,你可以形象点理解为当前就有一个指针了,这个指针呢,当前是指在这个第一个对象的上面,指的实际上是个空的位置啊,指在这儿啊接着的话呢,我们去调了一下,叫has next。
01:07
说你在这个位置看一下,下边head next不就下一个吗?看你后边呢有没有元素,就相当于看一下第一个位置了,你看123有好,那返回就是个处,那你要返回处,那我接下来就调这个next,我一调next这呢,其实做了好几个事儿,第一个事儿指针先下移,哎指针下移这是第一个问题啊,做的第一个事儿,第二是呢,把下移以后,这个位置上的元素呢返回,所以呢next呢会返回一个值,我们这呢,就把这个值呢给输出了。这是我们的第一个循环的第一个过程,然后呢,你到这以后啊,或者这几个指针我们就都都先都都删掉啊,哎,这不相当于刚才呢,我们首先第一次是在这儿,然后呢,你调了has next以后是true true呢,我们调next的话呢,指针下移了,到这到这了,然后呢,我们把这个返回以后,再去调has next,你站在这儿看看下一个有没有元素啊,有有的话呢,我们这时候就调next,一调next首先指针下移。
02:09
哎,同时将这个位置上元素呢返回,以此类推,一直走走走走走,然后呢,我们就走到,呃,先走到这儿了,说走到这儿你把二输出以后呢,再接着判断是不是has next啊有有的话呢,调next啊调next就跑这了啊,这个位置呢元素返回,返回以后再在这的时候呢,再调has next没有了。啊,没有的话呢,这个你就不要再进去这个循环体了,就避免了,再去掉next,再调就出现刚才那会儿的no such element了,哎,这就是咱们整个这个迭代器它的一个执行原理。啊,通过这个指原理,我们需要大家掌握的就是调next的时候呢,这个指针下移了啊,啊指针下移了,然后head next没有下移啊,然后同时ne还返回数据,这是第一个,第二个我们这个E,它只是一个叫迭代,它是用于便利的,它不是容器。
03:08
它不是容器,我们并没有说咱们通过这个当前集合啊,当前集合是一个容器,说呢,我调一个以推理的方法说呢,诶又生成了一个这个这个结构是吧,里边呢,把这几个输出了没有啊,咱们呢用的呢,就是你本质上存在唯一的这个col,这个呢eter它不是容器,它就是一个迭代器,就是用来便利的,它不装东器,它便利的数据都还是你原来这个容器啊collection当中的数据啊,这呢是我们需要明确的这个点啊。行,这个呢,我们把它停一下。
我来说两句