温馨提示:文本由机器自动转译,部分词句存在误差,以视频为准
00:01
嗯,我们之前用这种嵌套for循环的方式来读取我们的许可数据,但是它的效率其实也有问题,什么意思呀?因为大家都知道我们的list的它常用的实现类似r list和link list,那我们一般情况下就会问了,R list和link list他们效率谁快谁慢呢?查询效率,那我们说啊,一般情况下是r list,它的查询效率会快一些,为什么?因为我们通过索引的方式可以快速定位我们数据的位置,那所以说用索引的方式来查询数据,我们的R瑞会更快一些啊,就是这样,可是大家看我们这里,我们这里用到索引了吗?那你没用到索引的话,你是不是得线性查找啊,就得一个一个找,那效率其实不够快啊,那也就意味着你比方说有200条数据,你外面是200,里面是200,那么极限情况下,它应该循环4万遍才能得到我们想要的数据,就是极限情况下啊,那不管是不是极限情况下吧,那么感觉还是比较多的,因为它没有索引呢啊,所以说它的效率也不够快,那我们能不能再来提高效率呢?我们说是可以的,因为我们只要想办法让他肯定用到索引,那不就行了吗?那我们怎么能够让他肯定用到索引呢?我们Java中有一个集合就肯定用到了索引,那就是map。
01:40
所以我们接下来用map的方式把这个程序再来改善一下啊,首先我们查询数据,这个是没有问题的,嗯,好,但是呢,我接下来把咱们这我加上一个map,这个map呢,其实我们就写上这么写,咱们叫promis map等于new哈希map啊哈西,然后map啊。
02:08
然后呢,我们的inger,嗯,然后permi好写完之后啊,接下来我们来啊,给它来循环便利,循环便利什么呢?把每一个permis我们都给它便利一下,放到这个map当中,然后permis map点,然后p.ID然后给它放过来,诶这就可以了,这样的话呢,我们map里面就放置了所有的许可,并且跟它的组件发生了关联,好接下来我再把每一个许可,我们再来做个操作。我还是把每个许可当成我们的子节点等于P,而且我们说了不是每一个节点它都有负节点的,所以child啊,Child的点我们叫get,我们PID,如果它等于零,那说明它是顶级节点,它没有负节点,我们这么写就可以了啊,然后else啊,Else else之后,那这个时候我们要去找它的负节点了,但是我们找负节点不再循环了,我们从map里面找就行了,为什么从map里面找就行了呢?因为map是根据key可以关联到它的节点的,所以我们permi map.get我们叫做child.get PID,你这么写了以后,它的负节点其实就已经出来了,然后整合它们之间的关系就够了,Parent点。
03:49
Get DR,我们给它增加,我们叫做child。好了,写完之后,那么我们用了两个负循环就实现了他们关系的组合,那首先我得判断一下我们的方式对还是不对啊,把它停掉,停掉以后给它重新启动,只要数据能够正确的显示,那这个效率就一定比之前的要高,因为他肯定用到了索引。
04:20
好,那我现在我们刷新试一试刷新。好,大家可以看到我们的菜单数也正确的显示出来了。
我来说两句