00:00
那么何为扁平化呢?首先它仍然是一种映射操作,所以说底层的原理跟我们讲的完全一模一样啊,那么他在这里面做什么事呢?Flight flight就是压扁压平的意思。对吧,平嘛,压扁压平扁平化的意思合为扁平化,简单说就是这样一个操作效果,就是将集合中的每一个元素的子元素,什么意思呢?就说你遍历出来这个元素,如果它还是一个集合怎么办?继续遍历。那么将这个元素映射到某个函数,并返回新的集合。比如说我们看一个小案例,什么案例呢?现在看这一段代码,Flat map。我这个Fla map把这个upper传进去,这个upper仍然是刚才那段代码,就是将传进去的一个字符串干什么呢?转成呃,一个大写的。就是看一个案例软件代理,但是我这调的是up,那么这个flight的map会返回一个什么东西呢?它会把里面这个爱丽丝里面进行二次编历。
01:09
也就是说,会把每一个元素。如果你这个元素还是个集合,它会再变利。就有点类似于我们的底层的代码,好像是这种感觉,什么感觉呢?我这里做了一个便利过后,如果如果,但是它下面肯定有代码判断啊,如果item。是一个集合,我继续for循环。能理解这意思吧,就是你假如是一个集合啊,我这随便写一点,假如是一段集合,我继续for循环,然后进行相应的处理,这个地方再调你传递的函数,你是想干嘛就干嘛,所以说先你看,这样就特别好理解什么叫扁平化了。但有洞说,老师如果里面还是一个集合怎么办呢?他继续扁平化。那这边其实就是不是我写的for循环,而是一个递归调用而已。
02:00
啊,也不是很难啊,这这个道理呢,我这说清楚了啊,就说如果它里面还集合,里面还有几何,就不停的全部给你打散。它底层肯定是个递归,到我这儿只是编辑了两层,帮助同学们理解而已,帮助同学们理解而已,好的,那现在呢,我们就把这个扁平化的代码给他跑一下就OK了。来,各位朋友,现在呢,写上这么一个。啊,好东西,那取一个名字叫做扁平化的测试。我们取个名字叫做flight。啊,就是叫FLY,然后呃,Map映射的DEMO01OK。好,同学们,我们把这个写到这来啊,嗯,代码非常简单,所以说我也不啰嗦了,直接把这个代码拿过来为我所用。看清楚了,这是我写的,呃,一段代码。哎,这个after呢,我写到外边来吧。啊,写到外面来,那我就用一用啊,现在我们想干什么呢?需求是需求是是将。
03:04
将什么呢?将历史的集合啊,集合中的中的所有元素啊,所有元素包,呃,进行这个扁平化,进行进行扁平化操作。扁平化操作,即把所有的子元素全部打散输出。耳机。即把所有元素,所有元素打散啊打散,输出打散,这个打啊打散。诶,这个应该是这个三啊好,其实这个用户用处还是挺多的啊,你比如说将来你这个集合里面集合了好多,我就不用再去写了,我直接一个扁平化就全部拿到啊,这个还是很有用的,还是很有用的,那我就直接来玩一把了啊,那就是names点什么呢?直接是我们的fly left map,你看传输的函数呢,仍然是这样子的啊,这这个地方传进去,我们传一个upper。
04:07
好,这个道理就是刚才老师举的,那么返回呢,是一个新的集合,我可以接受一下,比如说NAME2,那么内二呢,大家可以猜测啊,它应该返回什么玩意儿啊,因为我们前面讲过,字符串也是一种集合,对吧,所以说我直接把它输出来,大家应该可以马上看到,其实就是单个单个的字母。A,就是单个单个的字母,来玩一把吧,Name,这name是二,好,同学们请看输出的效果运行。运行,那么我们运行呢,我们发现这有个错误,是我们前面这方写的一个模拟代码有问题,因为我这编辑出来已经不是一个集合了,所以说他这个会会多一些代码在里边,好我就先把它注销好吧。好,那么我回到这边继续来执行刚才这段代码,好,请看执行的效果,那执行完了之后,我们可以看到它就是打散输出。
05:02
好,就是你爱丽丝它在底层,相当于继续便利把爱丽丝里面每一个字母取出来,Bob,还有link,好,写完了,这就是扁平化好,扁平化好非常简单,咱们就说到这里。那么我把这段代码呢给同学们板述一下,刚才我们讲的是,呃,还还是属于这种映射操作的啊,只是变成了扁平化,于是我把这代码呢给它板书到这里。好,刚才讲的是一个扁平化的意思,来个标题三。哦,标题三,那么这边呢,我们有个代码。案例啊案例。案例代码。好,给大家写到这儿,案例代码呢,来一个小的箭头,上面这个是说明啊,扁平化的说明。Or扁平化的说明。好,那现在呢,我们把刚才写的代码给大家放到这就可以了。
06:01
Gay就是这种代码。OK。直接拿到这个笔记里面去,扁平化,我们就说完了。
我来说两句