00:00
好了,那么上午呢,咱们做了这样几个练习,试了试的这个函数的接口,对吧?那我们在使用的过程中呢,我们就发现在做练习的过程中,每次我要完成一个练习,或者说我要应用拉姆达表达式的时候,我是不是都得自己去创建一个接口啊,对吧?那这样的话是比较麻烦的,但是实际上呢,这个接口只是实际上不用我们创建对吧?对,只有极其特殊的情况下,我们可能才会自己去写一个函数式接口,那么实际上呢,人家Java呢,他已经给我把把这些常用的大部分的接口呢,已经给我们内置了,我们拿过来用就可以了啊,那么接下来我们看一下这个Java的几大核心接口,那实际上是不是就这几个呀,对吧?咱们过来一个一个列出来试试,是LADA3。说JAVA8JAVA8中对吧,内置的四大核心函数是接口对吧?四大核心函数接口,那么实际上呢,接口呢,函数式接口有好几个,但是呢,只要这四大核心函数接口会了,那么其他的它类似的一些子接口啊,我们是不是都会用啊对吧?无非是不是就告诉他那里边的抽象方法我们怎么实现呢?怎么用拉姆达表达式给它实现了就可以了啊,那么说这四大核心接口都有什么呢?那么第一个呢,我们称之为叫做consumer对吧,Consumer然后它带泛型的一个接口对吧?那么这个consumer呢,我们称它为叫做叫做消费consumer翻译过来是不是就消费啊对吧,那我们就称它为叫消费型接口对吧?那么它里边呢,有一个抽象方法对吧?消费那指的就是没有访问值吧,对吧,有去无回对吧,然后里边有个方法叫做accept,然后呢,你传进。
01:54
这一个参数,那么就没有任何的结返回结果,对吧,你对这个参数做一些处理就可以了,对吧?那么这个呢,我们称之为叫做消费型接口,那么相应的呢,还有一个叫做PBLA啊叫做superliar对吧,Superlier,那么这个接口呢,我们称之为叫做这个叫啥呀?是叫供给呀,叫做供给型对吧,供给型接口对吧,供给供给呢是无非,那是不就是用一些获取的呀,对吧?那么它里边有个方法呢,叫做返回个T,方法名叫做get对吧,还有就是你一定用那个方法,它是不是就给你返回一些内容,返回的对象什么的呀,对吧,那叫供给型接口,然后还有什么呢?还有叫做function对吧,Fun function function呢,对吧,它需要两个半形,一个是T,对吧,然后一个是R对吧,T代表参数是不是R代表反问值啊,这个我们称之为叫做。
02:54
函数型接口对吧?那么相应的就如它这个泛型生明的这样,那你是不是有个反回值啊,对吧?然后里头有一个方法叫做open line,然后呢,你传进来一个T,它是不是给你返回个R啊对吧,还就是你对这个T对象做一些处理,然后返回一个R类型的一个值对吧?当然你声明的时候,你是不是也可以声明成一样的,比如说传递个string,返回个string,这也是可以的吧,对吧,这是没问题的啊,那么相应的最后一个呢,还是这个什么呢?就是今天咱们一个用过了,叫做,哎不对,叫做pre对吧,Predicted对吧,这个呢,也是我们这葡萄的这个翻译过来叫什么呢?学称叫做判断什么的吧,对吧,或者叫做断言吧,对吧,叫做断言型接口对吧,断言型接口,那么断言型接口说用于做一些判断操作的,那我们说这里边的抽象方法访问值应该是什么类型啊,这个布尔对吧。
03:54
比如叫test,你传进去个D,你可以对这个对象做一些操作,然后返回一个负尔值,对吧?那么这个就是人家张老把内置的四大核心函数式接口对吧,就是人家已经给我们内置了对吧?当我们需要用到的时候,我是不是用它内置的就可以了呀,然后对这些这个里边的抽象方法,用拉姆达表达式对它进行实现是不是就可以了呀,对吧?那么咱们举个例子啊,举几个例子试一试,那第一个,那就是这个叫做consumer cn me啊consumer对吧,这个呢,我们称之为叫做消费型接口对吧,叫消费型接口,那这个消费型接口呢,那就是就如同这个名字一样,那消费消费是不是指的就是有去无回呀,对吧,对吧,通常我们说干啥消费就有去无回,比如说出去happy对吧,比如说这时呢,我们有个方法,方法就叫做happy对吧,Happy然后。
04:54
那heavy,那你是不是得花钱呢?对吧,我们可以来个叫做double money对吧,然后说干什么happy,花什么钱呢?你是不是得指定啊,那这个时候呢,我们就可以用现有的这个接口叫做消费型接口对吧,消费型接口然后呢,那消费是不是消费money,那得是double吧,对吧?然后呢,在这里边呢,我们就可以来一个叫做crl shift o导一下包,然后C点上叫做accept,你把这个money是不是传过来呀,对吧,去消费,那这个时候我们是不是就可以进行应用了呀,对吧,说写一个方法啊,消费消费money的对吧,但是至于干什么呢?消费是不是还没指定呢?那这个时候当我应用的时候,我们说happy呢,可能有很多方式,对吧,比如说消费多少钱呢?消费1万元,然后呢,紧接着说意看这个参数是一个consumer。我现在要对这个接。
05:54
口进行实现呢,要利用拉姆等达式吧,对吧,那这时有参数吗?哎,有参数了对吧,比如money对吧,M随便起名对吧,然后呢,但是是不是就是进去之后就是不是就消费了呀,对吧?那这个没有任何的返回值,你比如说输出点内容吧,输出点内容是不是可以啊,一调用这个方法,他就给我们打印输出对吧,比如说消费干什么消费呢?什么大保健是吧,可以谁说的呀,谁喜欢这个事是吧?知道吧,你们刚哥是吧?你们刚哥你们刚哥给你们上过课吗?对吧,你们刚哥喜欢大保健,我这有这这个保健是吧,写欢大保健每次消费多少元对吧?是不是加上这个M啊加。
06:54
加上这个圆对吧,多元可以了对吧,我们刚刚这个,那这时呢,我右键运行是不是有效果了呀,对吧,刚哥喜欢大保健,每次消费1万元,哎还挺挺通顺的是吧?好了,那这就是就这个如中这个接口所所说是不是消费就是你传进去的参数对吧?然后他对这个参数做一些操作对吧,然后就没有什么反问值操作也就操作对吧,当然还我们说是不是你也可以指定其他的方式啊对吧,不一定是这种还方式对吧,对吧,错对没错,你好像很专业的样子,好了,那么这个消费性这口呢,就这要了对吧,里头就是一个呃抽象方法怎么用返回值传一个对象,然后没有返回值的,那么下一个呢,来一个叫做供给型接口对吧,叫做供给型接口。
07:54
啊,Pplier对吧,Super对吧,供给对吧,然后叫做供给型行接口对吧,说那供给型接口能完成一些什么操作呢?供给是不是给你返回一些对象的呀?对吧,给你返回一些对象,那么比如说就是还是给你产生一些对象的吧,对吧,产生一些对象,比如说呢,我们来做一些什么事呢?我们说比如我想产生一些数,然后并把这些数产生的数呢放到集合中去,这可以吧,对吧的需求说产生一些整数,然后并放入集合中对吧,放入集合中这成什么对吧,然后那么这时呢,我可能设计这样一个方法,对吧,我要产生一个集合,里边装的都是整数对吧,比如说就叫get number list吧,对吧,然后产生多少个整数,有的时候我们是不是也指定了对吧?
08:54
和产生指定个数的整数啊,叫做指定指定个数的整数对吧?那比如说产生多少个整数,是不是可以用number么去指定对吧?指产生多少个,然后呢,产生什么整数是不是不知道啊对吧?那这个时候呢,我们是不是用啊是不啊用于产生整数了嘛,对吧,比如说SQP对吧,Ctrl shift o,这能好听吧对吧,那首先让我们返回集合,首先我是不是得先创建这个集合呀,对吧,来个list和NEW1A list,然后呢,创建集合,然后是不是要产生啊对吧,然后呢,所以负循环对吧,负循环对吧,然后负循环I等于零,I应该小于number,这时候number我指定的是个数啊对吧,产生多少个engage的数,然后放入到集合中去对吧,我产生number个。
09:54
对吧?那产生什么样的数呢?是不是由supplier它的实线去指定,对吧?所以说我在这里只需要调用sub,它有个方法叫做get,每次调用get,它是不是给我返回个inte啊,对吧?那我只需要把那个inte加到list中去就可以了,对吧?我还是拆分开来写了,得到sub.get get时候返回成NN吧,然后呢,我要把每次产生的这个N是不是加到集合中去啊,最后return这个list是不是可以啊,对吧?至于产生什么样的整数,我们还没说,对吧对吧?当然这个整数产生,你说想怎么产生就怎么产生啊,比如说我产生实像随随机数放入到集合中可不可以,对吧?随机产生十个整数放入到集合中,那么这个时候呢,我就试图调用这个get number list,我要产生十个嘛。
10:54
对吧?产生是不是是个随机数对吧?那么分中它有一个抽象方法是返回一个对象,但是调用时候没有任何参数吧,这个方法是没任何参数,没任何参数的话拉么法表达式左侧写就一个小括号,然后箭头遭这符右边是不是写方法体啊对吧?怎么产生对象,我是不是要生成那个叫随机数啊对吧?比如说叫做ma点上random,比如说100以内的随机整数可以吧,对吧?然后这里括起来,我给它强转一下。
11:31
搞定不搞定分号结束这行吧,对吧对吧,每次都产生一个,然后放到集合中,然后一共产生十个,这能反应过来吧,对吧,这时间转过去啊这样的话呢,方法调用结束了以后呢,它会给我返回一个list,里边装的都是number对吧,Number list拿到集合我们是不是通常变异一下对吧,来个增强负循环对吧,N nu拿到它以后s out一下,那这时右键运行。
12:05
是不是搞定了十个随机数,那下次我再用一些运行,是是又来十个呀,都是随机数对吧?右键再直行是不是到100以内的随机数啊,对吧,那这就是供给型接口对吧?用于给你产生一些对象对吧?你到底要产生什么对象,那你就自己去指定。看懂了对吧?那这就是供给型接口对吧?就是这些接口我们主要就是看它是不是来一个怎么实现呢?主要看我们的lada怎么实现的,那下一个是不是就成为函数型接口啊是吧,叫做function,对吧?传进一个T,返回一个R,叫做函数型接口对吧?那么函数型接口我们通常用来做什么呢?比如说刚才这个function咱们是不是就写过好几个了呀,咱们好像写了个y function,写了个main function to是不啊啊对吧,好几个,那么是不是比如说其中一个我们是不是拿function用于处理字符串了,对吧?那么现在我是不是依然刚才的欢乐,我们是自己创建的吧,创建的呀,现在我们说不用了呀,就用这个,那么我们就来一个叫做用于处理的那个字符串的需求,用于处理字符串可以吧,写一个方法就是专门处理字符串,也就是你传进去一个字符串。
13:27
返回的还是一个字符串可以吧,对吧,对吧,当然我们说那你要是另外一个,就是你传进一个字符串,返回字符串的长度是不是也行啊,对吧,就是看你的需求嘛,那这样的话呢,传上去一个字符串,返回一个字符串,比如说这叫s.handler对吧,那么这样的话,你要对哪个字算进行处理了,做一些什么样的处理吧,对吧,是不是做什么样的处理对吧,做什么样的处理,然后返回什么样的值,对吧,来个FUN是不是这个意思,Ctrl shift o找一下包。
14:07
自考证嘛,对吧,然后呢,我说对字符串之间什么处理呢?那就fun点它里头有个叫apply方法,我要对这个str进行处理。对吧,至于什么处理,咱们应用的时候再指定,然后return这个这个处理后的结果就可以了。可以吧,对吧,那么这个时候处理字符串方法我们写好,写好回来呢,我们就拿过来用一用。S3,然后呢,现在我要调用s tr handle的这个方法,然后呢,刚才咱们是不是写了个这个东西啊,杠T,杠T,然后我的上规5V碰碰碰碰是吧?然后呢,我要对这个字串做什么处理对吧?首先有没有参数对吧?有个参数SSPR,然后呢,要指定你的处理方式吧,对吧?那就SPRTR,比如说先来个stream,再来个ste吧,那这样的话呢,给它去除了首尾空格或制表符了以后,它会给我产生一个新的字符串对吧?比如new s tr对吧?拿到它以后我就c out new s tr,看看首尾空格这个符都去掉没有右键运行这和啊,我告诉写错了吧,杠T,杠杠T对吧,右键运行是不是就去掉了呀?对吧,去除了首尾。
15:34
空的是吧,直角对吧,那现在它是不是就比较灵活呀,刚刚才他说说我们说来个截截取呀,对吧,截取对吧,所以我要是underr对,写错了,说handler对,这个我它上面5V5对吧,然后呢,传过去一个str对,它做一个s.sub string对吧,从第二个到第五个进行一个截取指串对吧,那就string的sub str对吧,这样的话呢,我c out一下sub点不是subs tr对吧,那这时右键运行是不是来个截取啊对吧?那这就是对字符串的一些处理操作对吧,函数型接口对吧,做一些相应操作的,传进去一个参数,返回一个值对吧,当然值你不不仅仅这个泛型指定什么,你就可以写什么了,对吧,传过去一个字符串啊,返回一个认识啊,这都是可以。
16:35
搞定吧,好了,这是函数型接口,那下一个呢,叫做断延型接口对吧?Pre叫P对吧,Cat对吧,Predict我们称它为叫做断言形对吧?接口是不是就是用于做一些判断操作的呀?今天咱们试过了什么,什么1LO1小于等于35对吧,什么大于5000,咱们是不是自己写的Y推进去的呀?但实际上这个接口人家也给我们提供了,对吧?那么这样的话,我们要做一些什么操作呢?比如说咱们再来一个操作需求干什么呢?那么我们说,比如说处理还是处理字符串吧,就是我要将自呃指定的字符串,比如说也添加到一些集合中,对吧,说满足,将满足条件的字符串是添加到集合中去啊对吧,将满足条件的字符串都给它提取出来,然后添加到一个集合中。
17:35
范围可以了吧,对吧,将满足条件的字符串对吧,放入集合中集合中去对吧,那么这样的话呢,我要提取成一个方法,返回的是一个字符串集合吧,对吧?那么满足条件的字符串方式集合中方法名叫点啥好呢?嗯,判断。嗯,这个应该叫什么呢?呃,过滤可以叫filter s点可以吗?对吧,过滤,那么这样的话呢,满足条件的字符串放入到集合中,那这个时候我是不是也得来个集合呀,你给我来一大堆字符串,然后把满足条件的过滤过滤了之后放到新集合中,这可以吧,对吧?那这个时候呢,你来一个集合对吧,String叫list,然后呢,对吧,进行一些什么样的过滤操作吧,叫predict,它去指定对字符串进行指定的过滤操作,对吧?Ctrl shift的O导一下包,对吧?那这样的话呢,我首先有一个字符串集合,ST list new,一个a list,然后那个集合我说要便利啊,来个增强放循环便利list对吧对吧,便利list这里来个str,然后是不是开始过。
18:58
对吧,对吧,那说如果然后怎么样T点这个test对吧?说对这个NT进行判断呢?对吧,指定的判断操作,然后如果满足条件,那这s.list.pad把S点加进来,最后return这个s.list是不就可以了呀,对吧?至于对于这个字符串集合做一些什么样的获利操作,这不是不是得应用的时候再去指定啊,对吧,那这个时候呢,我们就去调用一下,调用这个方法的话,比test的四,那么这时呢,第二个叫filter s tr,对吧,传过就来个集合,但是我得找个集合对吧?那比如说这里有个集合叫list,然后来个a list,不是arrest arrest a点上at list,比如来个hello,来个at。
19:58
硅谷艾硅谷再来一个拉达,再来一个3W,再来一个哪个OK可以了,对吧?OK可以,那这样的话呢,把集合传过来,然后做一些什么样的过滤操作呢?比如说要把长度大于三的字符串给它过滤出来。
20:22
可以吧,对吧,长度大于三的正符串规滤出来,那么这样的话呢,那么过滤,那首先这个段线型接口predict它需要一个参数呢,对吧,你传过去一个string,然后呢,要对这个string做一些什么样的操作吗?比如说这个string大lesss要大于三,对吧,做这样的一个过滤操作,这时返回不尔值啊对吧,对吧,只有一条语句return是不可以省略不写的,对吧,Return是可以省略不西,然后呢,做这样的一系列过滤以后,它会给我返回一个哎,新的集合是吧,对吧,比如SDR list思吧SDR list拿到这个集子,我们是不是也变利一下啊对吧,那就增强Bo循环str,然后在这里sit out s tr list s tr啊,是str啊对吧,那这时再去右键运行。
21:22
就过滤成功了,对吧,就过滤出来了,所以说呢,那么实际上我们经常常用的这些接口呢,人家扎花已经给我们内置了,我们只需要拿回来应用就可以了,也就是说相较于之前每次我们应用它的时候,还得创建一个接口,对吧,实际上这些接口是不是都可以省略啊,对吧,都不用我们自己建,人家已经给我们提供好,对吧,我们说这次这四个呢,是比较典型的,也是比较核心的,对吧,但是我说那这参数好像不能应用,不能比基准广泛的应用吧,对吧,那我说实际上它也有一些比如说类似的子接口,比如说在这,比如说这两个叫做by function,对吧,这是不是需要两个参数啊,然后返回一个值啊,是这是它里边是不是有个抽象方法,叫做接收一个G,接收一个U,返回一个R,那时候你就可以对两个函数进行一些函数式的操作啊对吧,进行操作,然后返回一个R对吧,然后三个函数。
22:22
这就叫做unitary operator对吧?这unitary是不是叫一元运算呢?还义就是你传进去一个T,返回一个T,它是不是就是方程的子接头对吧?然后这里有bary operator,你传进去两个T,返回一个T,里边是不是有一个apply啊TT,然后返回的也是T,对吧?甚至还有什么叫做by consumer对吧,By consumer,然后呢,传递一个T和一个U,返没有返回值对吧,对吧?还有什么叫做to in function呢?To long function todo function就是你传进一个T,返回一个int对吧?传回T返回了传个T返回个double,这能看懂吗?还有就是这些呢,你就不需要自己去装箱拆箱,它是不是自动给你转了,行了呀,返回的都是对应的基本数据类型吧,对吧?那么相应的也有你传进去int或者是long或者是double,返回的是一个R吧。
23:22
对吧,对吧,就是CN这几个接口我们没有讲,假如说需要这些参数的时候,拿过来我们会不会用,能不能用拉姆达表达式对这些接口进行提供一些实现呢?对吧,可以啊,所以说上面这四大核心接口会了,相应的它这些扩展的一些子接口的话,我们也拿过来照样能用。是这意思吧,对吧,好了,那么这个呢,以上就是JAVA8内置的四大核心函数,是写数啊F。
我来说两句