00:00
那下一个呢,是这个第十个,第十个呢叫增强的stream API。啊,增强呢,Stream vpi这个stream API呢,我们在这个JAVA8当中呢,已经提到了很多的新的这个新的一些这个方法了,啊当然本身stream呢也是在JAVA8里边加进来的九呢,对它呢又进行了一些改进,这里边提到说stream API是Java标准库最好的改进之一,让开发者呢能够快速的运算,呃有效的利用数据进行并行计算,哎这个咱们这个诶接触这个circleq的话呢,你会知道啊circleq呢,我们直接呢可以操作数据库进行一些增删改查啊,过滤啊,排序啊等等,但是如果呢,你要是一个no circle的数据库啊,这个时候呢,我们更多的就得需要在Java层面你去做刚才说的这些过滤映射、规约这些操作了。那Java呢,原来你得自己写,现在的话有了死人API以后,哎,你就直接呢来调这个API就可以了。啊,非常的方便啊,后边呢,大家会接触到这个no的数据库。行,那在这个九当中呢,关于追PI呢,又增加了四个新方法,叫take well drop well of novel,还有一个叫ter啊这样的四个方法,直接呢,我们就看这几个方法就行啊,第一个呢,叫take well啊,这个我们演示一下就行啊,嗯,这个位置。
01:18
这个我们再新建一个。哎,JAVA9的一个T,这个我就顺着往下排了。Java酒的一个新特性是。诶这呢就提到这个,诶stream API它的一个加强,诶这呢就多了四个方法。嗯,那我们就按照这个顺序呢来说啊,首先第一个方法叫take well,这个take take well这个方法呢,就是说返回从开头开始的尽量多的这个元素。
02:00
哎,尽量多的这元素,那我们这呢,举个例子啊,比我们就用这个叫arrest.as list,这我们就诶我就随机的写这样的一些数据了啊。这个稍微小一点的线啊。行,这呢,我就写这样一些数,这个数的话呢,首先我们生成对应的一个list al。At least,然后通过这个list呢,我们第二这个stream方法,这就拿到stream了,在这个stream当中,现在说多了一个方法叫做take well这个方法,那这个方法我们按住CTRL键点进来,它就是九里边加的啊。行,那take take well,这里边呢,需要我们填进来一个叫predictdicate,就是一个断定型的,就是你得告诉我什么样的要什么样的不要出和false这样的情况啊,那我们这块呢,诶,这不是相当于里边存的都是integer嘛,那我就X啊,然后呢,判断X呢,需要小于,比如说我写一个啊60。
03:06
哎,这样,那这呢,其实相当于是个中间操作了,那我们再做一个for each。哎,做一个print输出操作行,这个呢,我们就写完了啊,写完以后呢,我们看一下这个输出的这个值都有哪些。诶出来的这样的一些值,那你大概看一看,23 43 45 55,后边没有了,那因为后边这数呢,发现比60呢开始大了,那这个再后边呢,还有一些比60小的,但这时候也不要了。那也就是说呢,从今往后我们去找满足这个题面要求的,一旦出现一个不满足的,直接就停掉。哎,这呢就是我们它的一个作用啊,说返回从开头开始,尽可能多的元素,按照我们指定的这个规则啊,哎,我们把它呢,就CTRLC。哎,在这做了一个测试,相当于是啊。
04:00
哎,从开头开始的,嗯,按照指定规则,哎,尽可能多的这个元素啊行这呢就是关于这个方法,那我们把它呢注释一下,我们说下边这个操作啊,还拿着这个list点调这个stream,现在呢有个叫drop well啊,一个呢叫take well,一个呢叫drop well,说当这个时候呢,我就drop掉,对其实呢,就正好跟我们上边这个相反。这块呢,一样啊。哎,你像这个叫take well就是诶诶well,当这个满足它的时候呢,我们就well,你就进去循环里了,那我就哎输出一个输出一个,输出一个,输出一个,突然出现一个不满足它了,这个其实就相当于我们的循环条件啊。直接呢就break,相当于就结束这个循环了,就是吧,然后这个呢是drop啊,就是只要是满足这个情况呢,我现在就不要过过过过过,哎,突然呢,你看出现一个。
05:01
不是满足的了,诶就不要再drop了,这种呢,是不是就开始该要了,哎从六十一开始,那关键你看后边这些呢,他还要不要对吧?哎要一直呢,是不是到结尾了,哎所以呢,他这块就前面呢,先不要不要不要不要,哎突然出现一个哎满足这个不满足这个条件了啊我开始要在后边呢,就直接呢就操作了,哎不再进行这个判断了,哎所以它跟我们上边这个take well呢,其实它正好相反啊,属于这个互补型的,它呢就返回与它这个相反啊,返回剩余的这个元素。哎,这是这样一个操作,行,这是我们说的,呃,它了啊,然后我们接着再往后看,再往后呢,这块提到一个叫of novel。哎,呃,那宝说可以,那是空的。哎,这样的一个操作啊,这个stream这个我们再新建一个方法啊。
06:10
这个stream的话呢,我们这个一开始讲到它的实例化的时候,讲过三种方法。啊,看一下我们这个复习笔记。哎,不是三种四种方法啊。这个神论篇涉及到它的实例化的时候呢,这是通过集合,通过数组,这不还可以自己吗?自己的话呢,这个叫恶五,那这个呢,是咱们这个在八里边就出现过这个叫恶物了啊,那回过来你看这时候我们先演示一下这个八里边出现过的这个恶物,那这里边呢,比如说写个123。哎,然后out enter一下生成了一个stream叫STREAM1啊,那这个STREAM1咱们做一个简单的for each。哎,那此时呢,里边这个数据呢,就是123。
07:03
哎,它呢就是123,那么在这个里边呢,其实你是可以写个no的。这是允许的,那那这个闹呢,也充当了一个元素,那就是有四个元素。那那咱不是也讲过这个终止方法有个叫count吗?打印一下这个个数啊,那这就是四啊,这个是它,但是呢,你这样注意一下,我这个stream这个of这块呢,我就上来就光写个no这个呢,你得小心了。这个是不被允许的,你看我们这个STREAM2点,我们做一个for each。诶,CTRLCCTRLV一下我们执行。你看这块,你看就报这个错误信息了,31行。啊,31行,在这就是说我们这个of的时候呢,里边不能够只填充一个空值。这个O的意思呢,说你可以呢,包含多个值,哎,多个值当中呢,可以有一个元素是空的,但是你不能这个只有一个值,这个值是空的。
08:06
哎,这个我们稍微说一下啊,这这个PPT里边呢,这有写,哎这呢叫不能完全为闹,也就说呢,你要有多个元素呢,哎,某个元素可以是闹啊,哎这个呢是呃恶物参数中的,哎中的这个多个元素啊,是可以包含这个nu值。哎,包含这个not的啊,那你要是这块这这样你逗号一下再写个note。这可以吗?嗯,但是这个呢,你看他也认为是对的是吧,那这个还行了哈,但是一般很少见到这种情况是吧?嗯,就是呃,你要是有多个元素的话呢,我们说可以包含闹值,那其实呢,这不也相当于含着这种情况了,包含闹值就行,但是呢,你不能说这个元素就只是一个闹啊,把这个删掉。
09:02
哎,它这里边这个参数啊,不能呃只存储单个啊,这个闹纸这个是错误的,这个其实呢,你去想谁咱们早上复习的时候呢,说过optional optional的时候呢,提到了他的恶五方法也必须呢,保证你后边对这个呢,得是一个飞空的啊,这个飞空的要求非常严格啊,那咱们这个stream呢,相当于对于原来这个它就相当于是原来的我们这个optional用的这个O方法一样,它也得是一个非空的,你要是空的话呢,这块我们看到了,这就报异常了,哎把这个呢也得处理掉。啊,这个呢,否则。哎,报异常行,那现在的话呢,说多了一个新的方法,这个新的方法呢,叫a novel。不就相当于是optional里边那个of no吗?对吧,你看我们这个stream它呢,也有个叫of novel,哎这样个方法,这个呢,按住CTRL键,这个是九里边加进来的啊,哎,在这里边我们呢,哎,你可以写个123,哎再写个no对吧。
10:11
Out enter一下,哎,这个stream来一个三,哎,然后呢,哎,STREAM3咱们呢,做一个for each。诶,CTRLCCTRLV一下啊这。说of novel,呃,这里边呢,我们需要注意一个问题,说这个,嗯,它呢,创建可以包含一个非空的一个值of novel,它这里边呢,不允许我们放这个多个啊,你看这里边我们把这个注掉,你看这个位置我们ctrl out斜杠一下只是一个值是吧,它跟这个不一样哈,这个of的时候,你把这个呢删掉ctrl al斜杠,它这是一个可变形参,也有一个这样的,所以我们刚才写的时候呢,你可以写一个,也可以写多个,因为它有两个购物方法,哎,这个呢,Novel很遗憾,它就一个。啊,它有一个啊,嗯,为什么就一个呢。
11:03
为什么他不提供两个呢,两个的话呢,就跟上面一样了。是吧,哎,你咱们刚才在这也看到你两个闹的时候呢,这个of都通过了,那你of no不也没什么意义吗?呃,O5NOVEL主要就判断你在这一个的情况下呢,你是不是no,你要多个了,多个都是no o5都没事,那你都没有必要再去提供了,是吧?诶所以这块呢,我们就只考虑这一个元素了啊,一个元素呢,咱们就提前提供一下,比如这TE呢,我这就写个I,这你先写个十啊,这呢就写成这个I了啊,那这时我们得到这个integer,这时候呢,For each,其实就这一个元素。嗯,这个我们执行。那这边就是这个十了成,那如果我们这个I,哎,咱们给它复制成一个no。啊,这就是个空的了啊,那此时呢,允许它是空的。哎,你看这时候我们打印这个其实没有了,你看是吧,上面这个no呢。
12:03
哎,这个now是咱们上边的这个对吧。那上面这个下边这个没有了,那你这个输出呢,你也可以不用它,咱们不还有一个呢,叫做count吗?看一下这个元素的个数,那看这个数,那那如果说你这个I不是no,这里边显然不就一个元素吗。就这一个元素,那现在呢,你把它改成是一个no。哎,他是认为你里边什么元素也没有,哎,就成这样子了啊,哎这呢就相当于多了一个这样的叫of和novel,哎这个呢,我们说呃,行参。哎,这个行参变量啊,是可以。是可以为啊,这个nu值的单个元素。对,刚才咱们也看到了,就不能往里边放多个了哈,它没有这个重载的这个方法,哎,也说了也没有必要啊,像这这个叫a novel,其实它呢,就相当于咱们这个optional里边的下边这个呢o novel了啊,这不也是可以为空的这样一个概念吗?
13:17
行,再回过来,这呢是我们说的这个第三个方法,然后后边一个叫ter啊,这ter这个方法啊,这个方法这个我这还写错了啊,啊ter这个方法,这个方法的话呢,实际上对应的就是咱们之前讲这个创建方式四的时候呢,提过这个啊ter方法,还有一个叫generate,这个eter呢,是之前JAVA8里边提供的啊,现在呢,要提的是它的一个重载的方法啊,这个重载的一个新的方法看一下。嗯,首先呢,我们得先呃,就是相当于通过这个方式四的方式啊,去创建一个stream了,这个推,呃这两个上边这个呢,是原来我们JAVA8提供的。
14:04
啊,上边这个JAVA8提供的,下边这个呢,是我们这个JAVA9提供的这个JAVA8呢,我们再稍微回顾一下啊,CTRLL斜杠一下,先有一个种子,比如说就是零在后面呢,放一个呃,相当于是一个呃函数了啊,比如我们放的是X,出来的是X加一。啊,就相当于是便利一个一个的自然数一样啊,嗯,这个时候呢,你要写一个for each,它是不会终止的。这个咱们简单的跑一下。咱们当时讲的时候演示过这事儿,这不就一直往上累加吗?哎,往上累加哎哟。终止了终止了啊,它就一直往上累加了,那我们为了能够看到这个效果,当时咱们讲的时候呢,用了一个limit。哎,让它的纸,哎,这个取十次就行,哎,那这时候呢,我们看下这个效果。
15:02
那他就长这样子了。哎,就长这样了啊,就是你到这个数值十的时候呢,就呃这个不不要输出了,因为我们就输出十个啊呃,就是相当于本身呢,我们把它称作叫创建一个叫无限流嘛。哎,叫无限流了啊,用的是这个这个方法,这个方法呢,你点进去看一下,这是我们这个它是没有明确写了,这是我们这个八里边加的啊,因为string v p呢,就八里边才开始有的,那下边呢,我们要说一个扎VA9龙的一个重载的方法。哎,充载方法我们还是通过这个string点,呃叫那这个我们就下边这个方法,那比如还是一个零,接下来我们需要填入一个叫predictdic。那相当于是一个判别了啊,那那这个判别我们X判别呢,需要拿一个值,然后呢,我们让这个判断这个X呢,它是不是。怎么着呀,比如小于这个100。哎,这就相当于是我们这个参数第二个,哎,后边还有一个参数,后边这参数呢,就跟原来一样啊,哎,让我们让这个X每次去递增一看看它什么时候呢,满足小于100了。
16:12
哎,我们就要,当你不满足的时候呢,就不要了。哎,就有了一个自定义的一种终止条件了啊行,那上面呢,是出现了这十个数,我们主要看下边这个逻辑啊。哎,你看这就出来了,哎此时的话呢,我们就从最初的这个哎这个零开始,从这开始的啊,然后往下走,直到呢,你这个哎小于百的时候呢,就终止了。啊,当你等于100的时候就终止,哎有了一个自定义的这样的一个终止条件,哎不像原来呢,就是一个无限的必须通过其他的方式呢去终止,这个方法呢,点一下这是我们从九开始的啊行,那这样的话呢,我们就把这个three片里边呢,涉及到几个新方法,哎,Drop well take well,哎,Of novel,还有下边这个叫ter,这是一个重载的新的方法,哎这样呢就哎说完这个问题了啊。
我来说两句