00:00
呃,那么下面呢,给大家讲解一个啊,这个刚才也说过了啊啊,下面介绍一个叫做视图的这么一个东西,那么我们来看一下这个视图有什么重呢。首先stream它的懒加载的特性也可以对其他呃集合应用用view方法来得到类似的效果。那么它有什么用呢?它是这样子的啊,V这个方法,它可以产生出一个总是被难执行的集合。啊,就是说这个集合呢,它你你做了这各种操作,它都是以懒加懒加载的形式来进行这个处理的。而且V呢,有一个特点,它不会缓存,缓存数据,每一次都要重新计算,比如便利view。那么我们来看一个小案例,来体验一下这个视图VU的用法,比如说同学们看我现在有一个应用案例干什么呢?
01:00
就是找到一到100 100,一到100这个所谓的数字中倒序,排序和它本身相同的所有数,比如说,比如说一就倒叙啊,比如说一,它反过来还是一,比如说二也是,再比如说幺幺。再比如说二二,再比如说三三,再比如再比如说四四等等,但是你这个四五对不对,你看45,反过来是54,所以说呢,它其实就是让你求这么一个东西,那这个东西对于我们来说,现在其实比较简单。对吧,目前我们学完了,就是前面的集合操作,让你在做这个东西,你用面,你用我们这个集合的操作方式来说,应该很轻松的得到,只要你写一个方法,比如说这写个EQ传进一个这个东西呢,然后我用这个布尔进行一个什么呀过滤就完事了,大家想到到这里面去啊,就说我对一到100进行遍历,然后呢,我对它进行一个过滤,过滤的条件是什么呢?就是呃,传进来这个int过后。
02:06
我判断他们颠倒过相不相等,所以说我在这呢写了一个非常简单的方法,大家看我的方法是这样写的。I to string equals I two string reverse,就是这个I先转成一个string,跟谁比呢?跟他自己。转成时之后再倒叙,看是不是相等,我就用了这么一个函数来处理的,这个呢大家应该看到。那么看到这个地方以后呢,我们来看一下我的代码是怎么写的啊,大家看我这里写了一个map。我做了一个映射,其实这个映射呢,在在这呢,我做了一个非常简单的处理,就是呃元把这个元素直接返回。所以说这个map呢,在这如果你呃不习惯,你可以把它拿掉也可以,然后呢,我用过滤,过滤完了之后,我就可以看到,呃,就是我要的数据了。
03:01
那我这里用了两种方式来玩,大家看第一种方式呢,我没有使用VIVO。我直接就卖谱了。还有一种方式呢,我这里使用了V,用这里我们就来比较这两种方式,就是这种方式。第一种方式和第二一种方式他们的区别在什么地方,从而说清楚了V。这个方法对于我们计算有什么影响?那么我们现在呢,来给大家演示一下啊,代码很简单,我就不敲了啊,非常简单,代码我直接给大家运行一下看效果。好同学们,我们写上一个文件叫view,对吧?DEMO01,好同学们,来个object,然然写上一个主函数,我把刚才这段代码拿过来。拿过来过后呢,我们先来做一个简单的解释啊,下面这个代码先不要看。下面这个代码你先不看,就看上面的,上面这个是我做了一个什么工作呢,大家看一下诶。
04:07
这个下面这个先不去看它啊,它又跑上来了。好,首先这个函数呢,其实相当于原封不动的返回,其实这个函数在这没有什么意义,你也可以不用啊,你也可以不用它啊,不用它也可以啊,这样大家看应该看的比较比较清晰了。干什么呢,我一到100进行一个filter。那配干什么呢?我要返回的是什么呢?要满足这个条件就是判断。如果如果这个数啊,这个数啊,倒序后或者逆序后啊,逆序逆序后。逆序后相等啊,逆序后和原来的哎,原来的数相等,相等就返回,就返回什么呢?就返回一个处,哎,否则呢,否则返回一个false,大家看应该能看懂啊。
05:03
啊,因为这个E上本身会返回一个真和假嘛,好,然后呢,我这边一到to进行一个filter过滤,这是我们一个最常规的用法,这是常规使用,没有使用view就是常规使用方法。常规方式好,为了看到效果呢,我把这个先把它注销。好,我把原,我把下面的代码先注销,不要让它影响我们的这个演示效果,好同学们来我运行一下。好,这个对我们来说应该很简单,直接就把结果返回了,你看。就是我们想的对吧,一到九,然后是呃,7718899等等,好这个没问题,现在呢,我在这做一个简单的改进,好我现在干什么呢?使用V来做一个使用VU啊来完成这个问题,来完成这个问题,那么说说老师你为什么要用view呢?因为我有这样一个需求,虽然你产生了这么多。
06:00
啊,这个上哪就是这个啊,再再来运行啊。在于形象,就说我现在的需求突然发生变化了,我的意思就是说你先不要给我产生这些数据,我用到的时候你再给我再说一遍啊,我用到的时候你再给我,那我怎么办呢?我这样写。好,同学们,看到前面代码已然一样。那这里我做了一个动作干什么呢?在这加了一个view。啊view啊,就这么简单啊,加了一个view,加了一个view过后呢,看到这个我们还是把这个既你建这个view的话,这诶vu这个地方不用不用传东西啊,那不用传东西,因为这个VU这个方法呢,我们本身也没有怎么参数传进去,所以说直接vu就可以了,那这个时候我们来接收一下这个啊点。Va。好,这个名字,干脆咱们还用上面这个,换一个名称就行了,二。好,同学们,看这样子输出这个结果。
07:01
说出这个结果有什么不一样呢?好,把它改一下,改成二。好,同学们看效果啊,我来print一下,Print谁呢?这个view sc2看效果啊,同学们看,两者唯一的区别就是一个使用的view,有一个没有使用view走运行。哦,运行。好。那当我运行以后呢,你会发现它返回的是一个sequence view,实际上它也是一个集合,但是呢,你看数据没有。没有数据,那有些同学老师在为什么没有反馈呢?因为他相当于是一个懒价值,说他认为你现在没有用啊,你并没有用它呀,所以说我不去计算。啊,不去计算,虽然他做了这个工作,但是他认为你还没有用到这个返回集合里面的东西或者是元素你就没有用,于是他就不给你返回。那有些同是它怎么会返回呢?同学们起看啊,假如我们便历的时候,它就出来了啊,便历呢,你仍然可以便利便利操作,来一个for循环,好,我就快速的for循环item。
08:09
然后呢,走view equals好,这个时候呢,它仍然是可以编辑到的,这是他每次都要重新计算。啊,相当于说懒加载,懒加载,我在前面提到这个事啊,用的时候才会真正的去进行这个VR的操作,好我们来看执行的效果。啊,执行的效果,同学们请看执行效果,诶你看这个地方仍然是过来了,那这地方我们有必要来做一个测试啊,这个测试呢,我以前没有做过,我想到这呢,我想看看,呃,想探讨一下呃,如果用VI,这个filter到底有没有触发啊,这个filter到底有没有触发,我们来研究一下啊,我把这个filter这个EQ,因为它如果filter执行的话,这个EQ就应该被执行,我在这说出一句话,看看它到底有没有执行啊。如果执行了的话呢,说明他把这个数据缓存起来了啊,如果没有执行,那就是相当于说他确实连这个filter都还没走啊,我就说这个EQ被调用被调用,那么为了不让这个来影响我们呢,我先把这个注销一下。
09:17
OK,好,我们来看看到底这里面有没有这个啊,调用起来啊,看一下它的机制。好,我们执行完毕。直接发现真的没有调用啊,真的没有调用,他这个时候真的没有调用啊,就是说你虽然写了这个玩意,那是因为它是懒加载,所以他相当于把你这个集合先给你缓存,等到你什么时候才用呢?等到你这个时候,那它真的就开始过滤了。啊,如果你用到了,那肯定要过滤,那我们再来执行一下。诶看这个filter掉起来了没有,你看一堆啊,一堆一共掉了这么多次,看到没有,它其实还是掉了100次,还是掉了100次,只是呃,有几次发现是嗯呃,其中只有那么这么多次啊,是返回一个帧,你看这个时候真的是全部都调用了啊,大家理解一下这个东西,就说你只要用了V用,将来你们注意这个细节,将来如果说在开发中,你们有这样一个需求,什么需求呢?我有很多卖,我有很多这个集合,我想对它进行一个扁平化,或者是map,或者是这个呃,Reduce,或者是折叠等等。
10:23
但是呢,这个数据你可能根据需求是你希望什么时候呢,什么时候用呢,你希望就说我我我我你可能想把这个这个真正执行的动作往后推。那你可以把这个先写VU,因为你代码按照顺序写,你必须先写一下,后面才有可能用嘛,啊这样子呢,就可以充分利用VU这个特性来优化我们的代码啊,我这里写到就啊啊同学们在这个程序中啊,程序中,程序中如果将来对对什么呢?对集合集合进行进行这个操作啊,进行各种操作啊,比如说像这个map或者filter,或者我们的reduce啊,或者我们的fold的啊,这个这个这个操作等等吧,等等,那么你你对这个结果呢,你并希望他马上执行。
11:15
对吧,你并不希望,并不啊,并不并不希望,希望立即执行,不希望立即执行啊执行而是,而是在使用到使用到结果时,就是你返回的集合结果时使用到返回,呃,使用到结果是才执行才执行,则则则可以什么呢?可以使用view。啊,来进行优化,来进行这个优化OK。好的同学们注意一下这个这个细节啊,那下面这个代码我就先不要了啊,把它拿掉好拿掉好的同学们,那么这个我也打开,那关于我们这个V的一个使用呢,我就给同学们讲解到这里啊,但这个我没去试,这个肯定立马执行了EQ啊,这个在上前边我们已然做了一些分析是不是。
12:10
那么我把刚才这段代码呢给同学们板述一下,刚才我们讲的是V这么一个使用的特性。好的。给他一个标题二,那我首先讲了什么呢?我先给同学们讲一个基本介绍和一个应用案例,对走一个啊,基本介绍来走。啊,基本介绍呢,大家主要是要体现出用V用来得到一个类似的效果,什么效果呢?第一个它可以产生产生一个总四倍啊,它是产生一个总是倍懒值型的集合,不要小看这个啊,将来对你们大数据优化,没准就这一个动作效率就上去了。没准你就加了,加了一个view,结果你效率一下就上去了,因为。
13:00
用得到的时候,你假如我得到了集合结果有1000万个对吧,但是实际用的只有100万个,那你性能不下一下就提升了十倍嘛,对吧,有时候一个小的技巧可能就解决问题,对吧,就就是这样子啊,就这样子,你们以后做一段时间开发,你知道有些有些这个优化呢,要动大手术,比如对架构。要进行改进,那就是大手术了,整体要推翻重改,这是数据库的一个重新设计,就大手术,有些地方就是程序的一点点修补,就好像咱们这个房间对吧,房间有时候呢,我们我们做内部的一个微装修,诶。比如说你在房间里面对一个这个厕所或者厨房做一个做一个装修效果也很也很好,那有时候这个房子,房子要大改呢,那也可以,但是小的修改呢,有时候也是非常必要的。好的,那同学们,我把代码呢,给各位朋友板书到我们的笔记中去。OK,那对应的代码呢,直接放在笔记中,好,同学们,那关于这一个V视图V的使用,我们就先给同学们介绍到这里。
我来说两句