00:00
好,那么咱们提到刚才一个叫eer这个方法,那下边呢,就咱们来说一下这个方法了,那这个方法呢,涉及到我们关于集合元素的便历啊,就像咱们前面讲数组一样,咱们也提到过数组的一个便利这块我们去新建一个文件。哎,Ter test,哎这呢,我们主要来讲一下叫哎集合元素的便利,哎便利这个操作,这个操作的话呢,我们是使用谁呢,叫ter,哎这个接口行,那么我们这块呢,就来做这个测试了,写一个单一测试方法。诶这样首先呢,我们有这样的一个集合,不妨呢,我就用上面这个集合,CTRLCCTRLV进来好了,然后有了以后,我们现在呢,诶通过这个CR点我去调一个呢,叫这个方法,这个方法调用以后,我们al enter一下就有一个返回值,这个返回值呢,是一个特类型的,这个类型的话呢,诶点开一看,它又是一个接口,这个接口通常我们要翻译成中文啊,就叫做迭代器接口。
01:19
哎,迭代器推这个接口,呃就是呃,它的翻译过来就叫迭代器了,那这个接口咱们在这已经明确写了啊说呢便利用这个接口压ID呢,就是这个接口的作用呢,就是用来便历了啊首先我们看下这个PPT关于它的一个介绍啊,在这里边啊在这写的说特这个对象这个接口这个对象哎,我们称作叫迭代器。迭代器也是咱们的一种设计模式啊,作用呢就是来便利我们collection中的几何元素。哎,这呢是刚of,所以咱们说那设计模式呢,23种,就是这四个人写的啊,四大金刚是吧?哎说这个四大金刚呢,给这个迭代器模式有个定义,说呢提供一种方法访问一个容器对象中的各个元素,那现在容器就是集合啊,这种方法呢,就是叫迭代器的这个模式,而呢又不需要暴露该对象的内部细节。
02:15
啊,你就直接要调这个方法就完了啊,提到一句话说迭代器模式就是为容器而生,我们的容器就是来装对象的,装很多对象,那这个对象呢,我们想便利,这呢专门有一种设计模式,就叫做迭代器模式,它呢就是用来给这个容器便利的,所以叫为容器而生,那这个容器的话呢,在Java当中不是集合就是数组啊,数组呢又比较简单直接呢,我们写个for就完了啊,谈不上说非利用设计模式了,那么对于集合来讲,咱们这里边要想便利它啊,咱们用的这个迭代器就是咱们现在要讲的这个E推,相当于呢,就是一个设计模式的使用啊,啊说呢,类似于公交车上的售票员,火车上的乘务员,空姐员。这从哪个层面说叫类似啊检票嘛,是吧,是不是大家呢,就相当于是容器中的一个一个一个成员一个数据了啊,一个一个都得过,看看都是不是买票了,哎,这就相当于是迭代器啊,就是把你容器中的元素一个一个过一下啊,给你便利,哎,就做这个事情,嗯,呃,空姐像像这个呢,嗯,这个东西都都见过,都是吧?嗯,空姐的话呢,就像有的这个大学还开空姐的这个研究生班了哈,就很无语啊,也不说哪些学校了哈,这个这个感觉很崩溃啊,说这个空姐其实就是一个服务行业啊,顶多就长得好看一点是吧,开了一个研究生专业,觉得很不可思议哈,那中国其实有很多这个专业都很特别哈,行,嗯,这个呢,先了解一下,咱们说的这个叫迭代器,这个模式啊,为容器而生,就是专门用来便利这个容器在Java当中点。
04:00
执行的就是集合,那下边呢,就涉及到该怎么去做了啊,这也提到这个特主要做呢,就是用来便历了,那便历的话呢,它这里边就会提供相应的方法,这呢我是从这个API里边呢粘出来的,你也可以在这块呢来看一下,返回的是一个eter,点一下点进来,诶这块呢就提到了它这样的几个功能,Default呢也是个默认方法,先不管,哎,我们主要看的话呢,这块呢提到叫has next,还有这个next方法。哎,这个我们看这儿这还有一个这个default方法,这叫remove是吧,那这个呢,是成一个default了,这个在咱们这个之前这个版本当中,它还是一个非default的啊,还是一个这样写法的啊,那在这个新的API8当中呢,把它呢,改成一个default的一个方法了,叫remove啊,这里边呢叫head ne和ne方法,要想去变历,那我们就需要用到它这里边的方法,那下边呢,我们就来看一下如何去便利啊。那首先咱们得到一个迭代器的对象,下边呢,要想便利,你就得用这个迭代器的对象了,那很显然我们看到一个方法叫做next,就是来取数据的,那咱们先取一个试试。
05:09
第二调一下这个next,先执行一下看看。出来了好123,现在呢,我们这里的第一个元素,那我这儿一共有123455个元素,那杨爱迪呢,我们就是不是五下啊五下看一下。哎,你看这就元素就全出来了,那我这恰好有五个元素,我就NEXT5项,然后呢,要多写了一下呢,嗯,你像数组就角标为界了是吧,我们这呢抛异常了,哎说no such element exception没有这个元素啊,因为这个就出去了啊,所以这呢我们就哎报异常。报这样的一个异常,这个很好理解啊,你可以想象着一个场场景呢,就是说呃,这是一个悬崖边上啊,说你最多走五步是吧,呃,走一步呢,就next一下,然后五个元素嘛,哎,Next一下next一下,然后这块本身已经到头了,再next掉下去了,哎就出了出去了是吧?哎,没有这个元素了。
06:18
行,这呢很好理解,那咱们开发中便利肯定不能这样写了,那50个元素,那你是吧,崩溃了啊呃这呢是呃算成方式一,或者说就是一个演示,开发中肯定不能这样写啊,这个呢,我们注入掉,那么不能这样写啊,怎么写?哎,有同学呢,想了一个稍微好一点的方式,这块呢,我们调几次,全部取决于这里边有几个元素,这个元素这个事呢,我们又调过,呃,又讲过赛的方法,所以呢,这块呢就可以,哎试图的写个for,所以呢I等于零,I呢小于Cy.S对,然后I下降,然后在这里边我们是不是就掉这么多次的next就行,哎这样这也算是一种方式,也没有问题,哎,是可以出来的,也不会出现这种掉下去的情况了,哎,这是方式二,但是呢,咱们开发当中一般也不这样写,虽然说呢比较简洁啊,但是没有这样写的,呃,为啥呢,其实也没有为啥啊,就是不爱这样写啊。呃,你这有个next,人家还有一个叫has next啊,这个你没有用,人家就希望呢,建议你这两个搭配着用。
07:36
啊,通常呢,这两个去用,那这两个怎么用呢?这个咱们就用这个,哎习惯就用well了,哎这个是咱们一个推荐方式啊怎么写,我这直接就开始写了well well呢,相当于我们这个for里边的这个位置,其实就相当于判断一下你当前集合当中是不是还有元素,有元素呢,我们就让你进入这个循环体,没有就不要进去了。啊,那这块有没有咱们不通过这个size去控制,我们呢,通过这个叫呃eer,哎,它呢有个叫has next说呢,你还有没有元素啊,啊有有就进去,没有没有就不要进去了,那要是有有的话我就标next,所以我们通常开发中呢,都是这样用,这是咱们推荐的写法。
08:22
OK,画一下看你看就出来了啊行,咱们呢,开发当中如果呢,需要去遍历collection,大家呢可以使用叫迭代器,那使用这个迭代器里边我们提到了两个主要的方法啊,这个内部的方法呢,哎搭配着去用叫has next和哎next这个方法。啊,这个方法啊,行这块呢,就大家呢记住啊,写的时候呢,就这样去写就行啊,这是便利操作。
我来说两句