00:00
我们得对它改进一下,咱们就先不不去运行测试了哈,我们说这个方法这么写吧,其实呃。不能说错,但是呢,不够好。它存在一个嵌套的循环。它存在嵌套的循环,嵌套的循环会有什么问题呢?呃,极端的情况,假设。这个外层循环要执行1万次,内层循环也执行1万次。那么总共执行多少次?哎,这个大家想的很清楚啊,他俩做什么运算呀。乘法。1万乘以1万就是一。嗯,那这个时候这个运算的次数呢,就会。我们套一句网络用语叫爆棚啊,它这个就会用上,算次数会非常的多。这样一来的话呢,对性能呢,是一种这个极大的消耗。哎,这个时候对性能呢,是一种极大的消耗。啊。呃,那这个时候呢。
01:03
怎么办啊,这个时候怎么办,我们说如果能够把这个乘法改成。加法。你看原来乘完了以后呢,是一。是吧,如果是加变成加法的话,就是多少。2万,1亿和2万还是差很多的,对吧?啊哎,1亿和2万还是差很多的,所以说呢,我们怎么把它改成一个加法。大家想一想。这个有什么办法?现在签到循环是乘法,怎么能改成加法?哎,那乘法之所以乘法是因为它是嵌套的,想改成加法肯定不能嵌套了。不能嵌套,就得并列执行,你先执行一个,再执行一个。对吧,先执行1万次。
02:00
哎,再执行1万次,那这个总的次数不就是加起来的吗。对吧,哎,所以说呢,我们这儿哈。呃,这个地方我们标记一下,这是一个old。不需要多线程啊,没有那么复杂啊。嗯,这个叫做一个get。牛不牛的其实无所谓哈。先成一个脑。嗯。来还是哈,第一个我们说把它全部查出来,这个是有必要的。这个是有必要的哈。嗯。下一个呢,说我们声明一个根节点这个变量呢,这个也也也需要哈,这个都都正常,然后第三步呢,我们这儿咱们做一些个调整。就是我们之所以这个它嵌套了呢,是找负节点的时候。
03:00
潜逃的,如果说呢,我这个。这个这个找负节点啊,我提前呢,就把这个这个这个叫做ID哈,和这个menu的对应的关系给它建立起来。你拿你拿子节点的PID。到我这儿直接根据ID去找这个对应的班全对象,那么这个时候这个事儿一步就完成,就不需要循环了。啊,这个就方便了,那么我们这个对应关系,比如说无。对应ME0,二。七就举例子哈,对应这个MENU039,我们对应MENU20哈。这样的这样的结构,我们用什么去存比较比较方便。哎,这个有的同学没有想到啊。是不是就麦克呀,这是不是这边是贱。这不值对吧,诶。
04:03
哎,所以这个呢,就是说我们去。嗯,创建一个map对象,用来存储ID和menu对象的对应关系。便于查找这个负节点。那它的键呢,因为是存ID,就是类型的值的话,就是menu对象啊,这是一个menu的map。用一个哈希map。诶,然后呢,下一个就是ctrl shift o啊。嗯,我们去便利一下这个manual list。去填充一下menu map。For each。嗯。来整一下啊,从menu里边get ID。蛮牛,然后呢?
05:02
往里边放哈,Menu map.put。这是借。这是直。啊,这个放好以后,后边这事就好办好办一些了啊说这个下一步呢,我们再一次去便利manual list。这个便利呢,要做两件事儿啊,嗯。嗯,查找根节点。哎,去组装。嗯,组装父子节点。哎,然后呢,这里边儿哈,就是说呢,我们去。嗯,获取当前menu对象的PID属性值。menu.get。PID。说。如果PID为闹。
06:01
就判定为根节点。哎,这个PID如果等于now。那么我们就给root赋值这个menu。哎,然后呢,这个时候这个就没必要往后走了,Continue。哎,就是因为这个时候当前节点就没有负节点了啊,肯定就没有必要往后走了。我们写上吧,啊。嗯,如果当前节点是根节点。那么。肯定没有负节点。不必继续执行。嗯,第再下一步呢,就是。嗯。再下一步呢,就是这个。
07:03
对我们说既然他这continue了,就就如果能执行到这儿,说明这儿不为闹啊,说如果PID不为闹。那说明嗯,当前节点有负节点。哎,咱们就可以进行组装。A。那么可以。根据PID查找对应的menu对象。这就这就确定就是它的负节点。到哪去找呢?哎,这个是到我们manual map里边。哎,到menu map中去查找对应的menu对象。这个事儿就不用再便利了,去get,把PID往里一传。哎,这就是确定,这就是爸爸,嗯。
08:01
嗯。既然确定了以后呢,我们就可以去将当前节点存入负节点的。存入负节点的这个children准集合。Father。Get children their either。把menu往里边一传。哎,这就组装好了。组装好了以后呢,最后这一步还是啊第11步。这个就是叫做。嗯。经过上面的。呃,运算哎。根节点就包含了整个树形结构。返回根节点。嗯,就是返回整个数。
09:01
所以这边呢,我们result。Success with data啊,把root返回。这是我们这个handle的方法,嗯,然后这给它来一个加括号。就没有警告了,哎,所以说下边这个就是说考虑这个去,这就其实可以访问他去测试一下啊。
我来说两句