00:01
好了,同学们啊,那么上节课呢,我们最主要啊是说了一下我们collection这个接口当中的这个常用方法。呃,可以呀,一次添加多个都是这个。Collection当中啊,有一个方法叫at all来看这个参数呢,是可以跟一个集合的。那你得前提得有个集合。然后你可以把集合传进去,这样的话就相当于把集合当中所有的元素加到我们当前集合里面。但这种用法比较少,一般都是一个一个加。好了,那我们刚才说到哪呢?说到我们这个集合的一个collection接口当中常用的方法,然后下面呢,说了一个什么呀?啊,说了一个这个叫做迭代,那么这个迭代呢,大家注意它这个是通用的,是通用的啊collection所有的collection的子类都通用,加了一些元素之后呢,我们调用我们的erator的一个方法拿到迭代器。
01:09
然后呢,我们对我们迭代器进行循环,有没有下一个呀,有的话怎么办呀,取出来。啊,取出来。这就是迭代器的一个原理,这就是那个迭代器。你要把这个迭代器拿到怎么拿呀,你调集合的一个方法叫eer就拿到迭代器了。啊,就拿到迭代期了,各位。啊。调我们集合的一个迭代。Eer方法啊,就拿到迭代器,通过迭代器的还next有没有更多的元素啊,如果有的话,我们就next方法就把它拿出来。啊就是就这么简单,不难啊不难两步拿迭代器,第二步呢,就是循环,对迭代器进行循环,每循环一次呢,往下走一个拿一个,走一个拿一呃拿呃,有没有下一个,有的话走一个拿一个,有的话走的走一个拿一个,有的话对吧,走一个拿一个啊就是这样的一个循环,直到有一天呢,他判断有没有下一个了呀,没了没了下一个,那这个条件就是false,最后我们这就结束了啊就结束了。
02:15
这是一个这样的图形。来这个我就关掉了,当然它还可以画成另外的一个图,什么图啊,就假如说这就是那个集合。对吧,这就是那个集合,然后呢,集合里边有元素吗?是不是。迭代器是一个,呃,迭代器是一,你说是一个类还是一个,还是还是一个,还是一个方法呀。这不迭代器吗?它是个对象啊。你调用集合它的E这个方法就可以拿到一个对象。拿到一个迭代器对象,实际上这块它是个引用,保存了内存地址,指向了一个对象。迭代器是个对象啊,对象上有相关的方法两个,一个是next。
03:00
啊,一个是next。嗯。迭代器是个对象啊,迭代器是一个对象。啊,迭代器是个对象。迭代器对象有两个方法。还是那。和next。你看的好像都是接口一样是吧,这个叫erator,这个返回也ter不一样啊,方法名首字母是小写的,你看见没有。通过集合去调这个eer,这个方法可以拿到一个eerator,而这个eer的I是大写的。这说明我们这是一个名字类名啊,或者是接口名,是不是这是个引用保存内存,内存地址指向的一个对象,这个是集合调用E这个方法拿到一个迭代器,拿到迭代器之后呢,我们判断迭代器有没有更多的元素,有的话我们取一下。
04:15
啊。嗯,你也可以这样理解,这个集合里边有元素吗?是不是啊,有这些元素。然后呢?你现在呢,拿到这个迭代器了,那这个迭代器呢,实际上是指向这个位置的。明白吧,哎,然后可以看成它往下走。对不对,哎,往下走。嗯。它呢,有一个方法叫什么has next。返回一个布尔类型啊,就是迭代器下面有没有更多的元素可以迭代。这就是那个迭代器。啊,整个这个集合,这叫C。
05:01
返回一个迭代器。就整个你这个集合C。看见了吧,调用你这个方法返回的这个对象,It就是它。然后呢,他这个对象啊。有这个方法。可以来判断它下面是有更多的元素可以迭代,如果有的话往下走一位。明白吧,那你往下走一位得调哪个方法呀。你得调next的方法。你只要调这个next的方法呀,它就会往下走一位。明白。哎,他们往下走一位啊,走到这儿。走到这儿之后呢,它会把这个元素指向的元素取出。把指向的这个元素取出,返回的是一个object。明白吗?然后呢,他再去调这个has next方法,有没有更多的方法,呃,有没有更多的元素,有的话怎么办呀,再去调next这个方法,所以has next和NEXT2个方法是交替的。
06:12
交替再往下走。啊。它为什么会往下走?是因为你调用了一个方法,调了这个迭代器对象的一个方法叫next,它才会往下走的。啊,才华走的。这块就走到这儿了。指向的这个元素还怎么着啊出啊。嗯。还是这样的啊,这样的。如果你一直next,现在怎么着呢?它已经指向了这个位置。明白吧,你一路过来都是这样。都是调的方法。是不是按调next方法?那么调那方法一路走到这儿之后呢,它会把这个地方指向的这个元素再给它取出。
07:08
那么此时呢,你刚刚调完这个所谓的next的方法,所以紧接着调next。它下面有没有更多的元素啊,没有,没有的话返回false循环就结束了。啊,所以说呢,我们是next的方法和我们next方法是交替使用。Next方法返回的是object。喊next方法是我们的布尔类型。这两个方法都是迭代器对象的方法。啊,都是迭代器对象的方法。明白吗?迭代器对象的方法。啊,这个。交替啊。处的话就是死循环。
08:01
你处的话就代表你你一直没迭代完啊。知道迭代,迭代完就就就就放了呀。你咋的,你一个集合里边还能放无限个数据啊?没头呗,不可能啊,一个集合里边Y啊。用弯要处的话,如果不加还next改为true,最后会报异常是吧?那肯定会呀,你咔咔咔咔一直往下去,那能行吗?你咔咔咔一直启动,不就出问题了吗?是吧,你说你把这个把这个代码拿过来,你说死循环说连判断不判断,我就咔咔咔咔一顿取是不是。看见了no such element exception说没有这个元素了。没有这样的元素了,你在这咔咔咔一顿取,异常发生了,明白吗?异常就发生了。
09:02
你如果用死循环一直取对吧,一直取不判断。会出现异常。这个异常不用记啊。对吧,你不能这么干啊,它写法就是这个写法,先判断他有没有,有再取有再取没了循环结束。啊,这样的话才可以正常的把数据取出来。他可以把数据取出来。啊,我再强调一下啊,这个呢,和我们什么呀,集合后边的集合没有关系,这个方这个方式都是通用的。拿迭代器,通过迭代器的has next和next。啊,来取元素。
我来说两句