00:00
好,这呢就是咱们刚才讲的这个叫迭代器啊,如何呢去便利我们这个集合元素啊,这里边涉及到这两个方法啊,呃,这两个方法的话呢,呃需要大家呢能够去呃正确的去使用啊has next,还有我们这个next,呃,尤其呢大家需要注意就是next操作呢,还有两个事儿,哎第一个呢,就是指针下移是先下移,哎然后呢,你再把下移以后的这个位置上的元素呢返回,哎对这是这个问题,哎咱们刚才也说了一下它的一个执行的原理,哎大家呢,就是便历的时候呢,诶你知道有这样的一个结构啊存在,呃那么接下来的话呢,我们说个什么问题呢,就是大家呢,写这个便利操作的时候呢,可能会有一些错误的写法,或者说呢,有些同学呢,就想,诶说能不能改一改别的这种写法,那这里边我们提到两种形式,那很显然这两种形式呢是错误的啊,那我们看下它怎么错了,这个首先呢,我们还是得先提供当前这样的一个集合啊,然后的话呢,我这也去提供一下e Twitter,所以这块的代码呢,先都。
01:00
一样,哎先都一样,然后接下来怎么做呢?哎有的同学呢,就会这样想说呢,用不着去提供这个叫has next了,他怎么做呢,他这样做的,说这个while啊,我呢直接拿这个叫E点,我调这个next方法,我看下这个返回值,说如果这个返回值呢,要是不是no的话啊,说呢就有数据啊有数据,然后把我们这个数据呢给它返回啊又调了一下这个叫next方法。这样看看他这个怎么错了,嗯,就是需要大家对上面我们说的这两个方法呢,你知道方法是什么意思,哎,然后分析就行是吧,这块你比如说我们要是去执行的话呢,会出现大概什么样的一个效果呀,嗯,控制帧异常。
02:00
那不能控制人啊,咱们那会出现的是这种异常,这个会出现不会出现啊,还有什么问题啊,它是不是会跳着输出啊,诶对你看呃,咱们直接先分析啊,返回一个迭代器以后,这个是它的一个对象,然后调next方法,我们没有判断has next直接调next了,那不等于no,相当于你这时候呢,把123拿到了,不等于no,确实不是no,然后再接上next这块呢,你是不是把456输出来,123没出来,然后你又回去呢,判断一下next指针下移,判断person这块是不是no,不是no,然后再第next把to,把这个string,这个to姆,哎输出了。然后再回去的话呢,说呃,再next false for这块呢,是不是no,不是no再往下走。没了就掉下去了,所以呢,就是一方面呢,你看这个跳着输出同时的话呢,这个呃,还出现了这种情况,那这个呢,就是错误的跑一下,你看这个呢,就是咱们刚才说这个情况,然后呢还报这个问题了,那这呢是这个错误的这个方式一那想呢,把这个has ne给省掉,这个事儿呢,不行,哎这呢,大家注意一下这个问题啊,这是一个错误方式,然后呢,再举个例子,再举个例子的话呢,有同学就想做这样个事儿了,说呢,哎,这是一个eer,我在这块调过,这块调过,说呢不想定这个变量名了,说能不能给它整成匿名了啊怎么写呢,这样写说呢while well呢,我叫CL点叫eer。
03:36
啊,这不就返回了一个的一个实例嘛,然后这个实例呢,我们这不就调它的这个has next了吗。哎,就这个这呢,其实咱们用不着再去外边定义这个括号了啊,所以呢,我通过这个C点一相当于就把这个值就直接换成它了。嗯,调这个head next说呢,如果是个处,哎我这边呢就输出,输出的话呢,我直接在CL点叫,嗯再呢直接调这个next这样写,嗯这样我要执行什么效果,嗯死循环是吧,那死循环出出结果不。
04:21
不断的输出谁啊,对不断的输出123了。看这停不了了啊,他一直在这输出,我停一下啊。行,这就不接着往这输出了,嗯,这个的话呢,通过它我们想说明一个问题,就是每当呢,我们调特这个方法都会返回一个迭代器的对象,这个迭代器的对象是个新的啊,新的这个对象呢,它的指针就会在开头啊,你拿着这个开头指针判断has next是个true啊,是个true的话呢,接下来我们这个调的叫呃,这个对象的一个ne方法,把123输出了,输出以后呢,你这块呢,回来判断是个true,那这时候你回过去的时候,注意这时候呢,你是不是又拿着一个新的了啊,新的head ne是不是还是判断第一个位置有没有元素了,然后又拿了一个新的呢DNEX,所以始终呢都是第一个元素啊这呢是一个哎,错误方式二,嗯,就是大家呢,想变这个呢,我觉得挺好的,想想有没有一些新的思路是吧,去解决这个问题,但是变完以后呢,你发现不对,这个呢,能够用我们讲面向对象的一些逻辑,哎,去解释说明这呢,咱们提到的。
05:33
几个点就是我在PPT里边写的,说集合对象每次调用ter方法的时候呢,都会得到一个全新的迭代器对象,哎,默认的游标呢,都在集合的第一个元素之前啊,这这个呢,就能来解释咱们这个它的这种情况啊,这是它的算是一个知识点了啊,哎,大家关注一下啊,这个事儿的话呢,我们也把它写在这个上面啊。你看这是第一个,然后第二个。
06:01
这样。行,那这呢,我们就举了两种这个错误方式,大家呢,写的时候呢,你就避开这两种错误方式,哎,你就用这种方法啊,这两行代码呢,去实现就肯定错不了。
我来说两句