00:00
好,我们继续来看留的一个新的API当中的一个迭代,那么在讲新的之前,我们还会还是回顾旧的,那么这个eer方法,它可以在这个一的基础之上是不是迭代,那么刚才我们在运行的时候,它出的结果是什么?哎,怎么都是负一呀?哎,因为在这里其实出现了一个问题,什么问题呢?那么这个它在迭代的过程当中,会一直由一三五七一直涨,涨涨涨到多少呢?涨到整数的最大值,当我去涨,涨到整数的最大值的时候,那么再去做处理,那么它就变成。负数了,是不是溢出了,哎负一,那么负一以后呢,这个T麻烦了,这个地方它永远是一旦变成负一,它是不是就是一直负一了,哎,所以这种的效果是这样,所以为什么会出现负一,就是因为它数据是不是太多了,无限流,所以像这种情况我们怎么办呢?哎,我们最好给它加一个limit limit比如加个十什么意思呀?哎,限制它的流中的元素十个,然后再来迭代,好,然后呢,我们再来运行。
01:26
哎,这回是对了,这回是对了,那么这样的话,我们就观察啊,这是这个。这是这个,这是这个基数,有这样一个增长,有这样一个增长,好,然后呢,我们说这个方法,它在这里有一个不太好的现象,就是流是无限的,并且出现了某个特殊值的时候,就会变得非常的,哎,非常的非常的诡异,出现了负一,好那么在我们的JAVA11当中,对它进行了一个改进,也就是迭代,它不是无限的迭代,而是变成了什么有限的迭代,好那么有限迭代也是用于创建流的。首先我们来看特瑞的方法,哎,那么这个特瑞的方法已经其实在这列出来了,第一个是我们比较早的,第二个呢,这是新加的,那么第一个参数仍然还是一个种子,第二个参数呢,是一个判定器,第三个参数呢。
02:31
I是单目运算,哎,单目运算好,我们还是以刚才的例子为例,第一个还是以,然后呢,最后一个是单目运算,我们在这里还是哎,二乘以T加1I加一,好,那这样的话,中间的这个是什么呀。哎,注意这个地方中间的是一个判定器,什么意思啊?哎,判定器判定这个值,哎,那么显然也是需要一个对象的一个参数,那么判定的结果什么?比如T小于哎,1000,哎,T小于1000好,那么这样的话,这是一个条件,这个条件的作用干什么,能不能想象啊?哎,它是用于是不终止这个无限流的一个产生啊,让它变成有限流好,然后呢,STREAM2,我们再来for each ione each,然后呢,对其进行一个打印输出,好,那么在前面的打印输出当中,诶,给它加一个,中间再加一个分隔线,好,然后我们再来运行这个程序。
03:46
哎,那么运行这个程序我们就发现,诶,怎么到了511这里呢?上一次我们不是产生还有1023吗?好,那么为什么在511这就结束了呢?哎,就是因为中间的这个判定器是在起作用啊,好,那么这个判定器它会根据这个单目运算产生的结果是不是对其进行判断啊,我们说这个结果是什么呀?已经第一个之前的元素是511乘以二以后,是不是已经就大于1000了,哎,所以我去判断这个新的结果产生的新的数据的时候,这个判定器就判定它为false,所以在这里就终止了,所以这个迭代器它是一个啊迭代方法,有限的迭代产生一个有限流,而不是产生什么,不像之前的方法产生无限流,无限流。
04:46
不太好用,并且我们说在这里用了条件更加的灵活,之前的厘米的方法呢,哎,可以截断,但是它的效果没有我们的这个。
05:00
判定器灵活,没有判定器灵活,这就是一个,呃,JAVA11当中对于硫的改进,哎,这是非常有意义的。
我来说两句