00:00
好,接下来呢,我们讲一下这个top n的一个案例啊,这个top呢,可以是TOP3啊,可以是TOP10,可以是TOP100啊等等都可以。那之前我们是做过一个分组排序啊,还记得吧,分组排序里面这个要求我们输出是不是价格最贵的。价格最贵的那个,当时让你们输出是价格最贵的第一个,那你有没有想过让你输出价格最贵的。头三名。都三个,那怎么办?输输出的时候,这个将投三循环三遍就OK了。简单啊,比较简单,那我们来看一下这个。对需求2.4结果进行进一步的加工。输出流量使用量在前十的用户的一个信息。还记得这个2.4吧。2.4是这个虚列化啊。2.3记得化这个案例呢,它最终输出是不是一个流量啊往回。
01:01
运行一下,把这个结果运出来。的不得。目前没有。邮件运行。Out 1A长这样。输出的结果呢,就是呃,手机号上行流量下行流量,总流量,现在要求什么呢?按照总流量的前十位,把这个信息我。就这一个需求哈。回过头来啊,看一下代码。就将这么一大堆的内容当中前十个按照他我说。那代码呢,我就不大家敲了啊,都是基于那个流量统计去改的。这个流量统计呢,有一个罗,对吧,啊没。都有印象啊,呃,这里面你稍微注意点什么呢?我在上课的时候是按这么去写的。
02:01
但是笔记里写的是不是没有这个零啊?啊,要有这个零相等的时候啊啊。后面的才能用。这注意一下之后呢,下面是有一个他。在这个原有的这个map里面做什么事情呢。加上一个去大夫集合。什么特点?这不有序啊,可以排序,对可以进行排序。那这里面呢,是这个并对象为k test为这个Y流啊。往下走。其他地方都没有变,都是那个那个对象啊,没有任何变化。在这最下边啊。也说往要往出写的之前干什么呢,将这个B。传到。当时为什么要他作为啊?记得吗?还记得他吗?售价对这个流量啊。
03:02
那时候要排序啊,哎,所以说把它放在这儿了啊OK,那放在这儿之后,那value呢,就是手机。号对吧,嗯,手机号,那这也一样,反正就把你的病对象和手机号传进来。啊,获得他他是可手机号value进来之后,如果说你这个map.s大于十。这相当于是一个集合,集合里面存放了好多好多数。一旦这里面大于了十。我就要把这里面我是把最末一位干掉了,原因是什么呢?我这个排气出上的倒序排的。你上面是1万啊,然后下面是存。99 98 97啊,突然来一个80,我这将80给干掉了。因为有是道期排气吗。啊,那我就把它这个map里面的。最后一位干掉他叫last。那是不是这个里面始终最大也就保持十个。那这个集合会占用你很大的什么?
04:00
不会吧,这是这一个哈,好,那到什么时候再对这个集合往出写呢?可是。就是相当于收尾啊啊。收尾的时候,哎,便利这个卖。这里。然后呢,将它往出去斜right一个一个对象的往出。就是你这里面不存了十个数吗?那我就把这十个数一个一个的写到六段。不难吗?再回顾一下啊,这里面。们就添加这么几条代码,定义了一个去卖。啊,去卖法之后呢,在这个map阶段,就是往这个去map里面写数。写出有一个判断,只要你这里的数大于了十个,那我就把最小的。掉,那如果你是正序的话,你把第一个干掉。那不管怎么样,麦克阶段完事之后肯定要走clear。那二版呢,我就把这里面呃,满足要求的都写到六。
05:03
当然你可以不在这个麦克进行一个处理哈,不再处理的话,是不是所有的排序都在六段处理了。那是不是性能上会差一些?啊,所以说这也是在map端处理提前的一个预处理,提高你的性能,不做也行,如果数据大小可以不做。那你可以直接进入到铝端,铝豆端呢,也非常简单。依然是定义了这么一个集合啊,也是定义集合。然后。干什么呢?在原来这个for循环的基础上啊,做了一个判断,像这个催map集合里面依然是。天数。还是往里加,把你所有的不同的这个map map拷过来的数据。上期咱们考了一堆书嘛。还合成一个大的一个统一有序的数据吧。那在这里面还是往这几个里面装,只要大于十条,我就把最小的。啊,大于十点就把水也能干掉,就这么一个原则。
06:01
那干完了之后,你看我这个整个六阶段,我从完没往这血呢。在什么时候写的?在clear up的时候依然是啊。电力这个去。军方谱写。如果说你不考虑这个性能角度角度的话,我直接可以在你六端就是。这件事情就OK。啊,没有任何问题。这就是top n哈,那下面呢,这个是啊,这个驱动啊,没啥说的啊。那我们可以把这个案例跑一下。提前已经给导进来了哈,Driver。来到这个这里面。输入数据,就是我刚才生成的这个OUTBOOK1。输出数据呢,是。右键运行。
07:05
是不是就按照总流量的道具的前十名统计?啊,像这个性能呢,是比较,呃。效率比较高的哈,这个是我在一本。迈尔就设计模式啊。如何去?统计这个套本。
我来说两句