00:00
我们来看一下map的排序。各位。呃,首先我们要清楚一点,就是map在前面讲解的过程中,大家都知道map呢,它其实这个K啊,就是默认是无序的,而且呢,高浪里面并没有一个专门针对麦普K进行排序的一个方法,这个很遗憾啊,确实没有。呃,一其他的编程语言里边呢,这个map,它这个K要么是有序的,要么就有专门的方法,但是go浪里面没有,那怎么办呢?大家看我这里go浪中的map默认是无序的,注意啊,他也不是按照添加顺序存放的。你每次便利得到的输出可能是不一样的。我们来举个例子。好,我们来举个例子来说明这个事情,比如说因为我现在讲的是map排序,说说我还新建一个文件夹好吧。The map shot。Map,我们新建一个文件main.go。
01:03
OK,那老规矩,我们从这边呢找一份代码。找一份代码放过来。看一下。现在我们讲的是map排序。Map排序说明,首先我们来写一个数组啊,我们先写一个map,写一个map,大家看,比如说我这里有一个MAP1,好吧,MAP1。那么这个MAP1呢,我们这样子来做,就事先就给他make一个,Make一个这样的空间吧,啊,Make一个map。什么样的呢?Int和int的好,假设有十个好吧,然后我往里面放东西了。比如说第一个K是十,然后这个值呢,我们放的是100。MAP2 map1是一我们放的一个,比如说13 map2。啊,还是MAP1,它是四。
02:02
给他一个值,比如说56MAP1。然后呢,给他一个值,比如说是。呃,小一点的吧,大大点八。给他一个90,好同学们,我们来输出一下这个map,我们看一下它的顺序是什么样子的,我们输出这个map了。来CD。CD到CHAPTER09里边去,然后CD到map sort对吧,诶salt。CD到。Map so。诶,这边没有是吗?CD第二点上一级CD到map short。然后我们go run一下,Go run一下,命顶go跑起来,我们可以看到它输出的信息是这样子的,八。146,诶,我们看8146什么顺序,你看啊,它并不是按照这个K的从小到大。
03:01
也不是按照从小到从大到小,而且你看添加顺序是十一四八,他也不是十一十八。说的这个顺序呢,其实它是无序的,完全无序,你看再来。你看再来它有可能发生变化,诶你看这次又变化了一八十四。而且这个这个麦,它这个没有按照K排序啊,据说。高浪的设计者本身,先前他是按照这个顺序排的,默认是有一个顺序的。但是呢,有相关的程序员说这个map最好是无序,所以他把这个功能就去掉了,你说这个多多郁闷的一件事啊,不管怎么样,他就是无,他就是无序的,那现在我们要让他排序怎么办呢?注意听要排序可以当做。我们要排序的话呢,可以使用这个方法,就是勾浪中的排序是先将K进行一个排序,然后根据这个K的值呢,遍历输出即可,它的思路这样子啊,听我说。
04:02
如何按照map的这个K的顺序?顺序进行排列。进行排列输出。好,他的思路这样子,第一步,第一步先将先将迈普的K。放入到。放入到哪里呢?放入到一个切片中。放入到一个切片中啊,注意它是放到一个切片中。这第一步,第二步呢,对这个切片。对这个切片进行进行排序。对这个切片排序。对吧,排序,然后呢,第三步。便利这个切片。便利。切片。对不对,便利切片,然后按照。按照这个K来输出。
05:00
来输出这个map的值。他就这样子的,那我给大家演示一下,我给大家演示一下,呃,第一步呢,首先我们先要定义一个切片啊,我们先来写个切片。那这个切片很简单,我们这样写一个啊,就是比如说我们叫kiss。对不对。Case,我们先定一个吧,VR。对不对,然后呢。等于什么呢,这样一个东西。大家看到这是不是一个切片啊?这个切片呢,是里面放int的,然后我现在保存一下,看看代码有没有错误。没有错,不是吧,没有错,哎,这地方有问题。啊,他说不能使用一个表达式,这个地方我们把它处理一下就可以了。好把这个把这个去掉啊,把这个去掉就OK了。把它去掉就可以了,好,我们接下来往下走,那现在我们来看便利,他说这方是K没有用到是吧,我们便利。
06:02
For,我们便利谁啊?我们遍利这个map,把它K取出来,大家知不知道怎么去便利一个map啊?是不是前面就是这个K,后面是它的词,还有印象吗?然后for range range一下。Four。Range。对谁进行编辑map?MAP1。好便利,过后呢,这地方就会拿到这个K,我把这个K呢放进去这个V这个值我先不不用它,所以说我不管它了,直接把它追加进去就行了,Open。PE的谁?在这个K里面,Case里面,我open k。进去的好,我接收一下。对吧,好同学们,当我这样遍历完了过后,我对这个K,这个K里面是不是就有很多这个case,这个切片里面有很多K了,我把它进行一个排序。
07:01
排序,那么排序的时候呢,呃,有一个专门的方法,有一个包叫salt,这个包它有个方法叫TS,我们来看一下这个方法。大家看到在这里面呢,有个salt包,Salt包里面有一个方法叫。Its。带到到这里,他接受一个切片。看到没有接受一个切片,那么按照递增顺序排列,当然还有别的排序方法很多啊,我这用的是递增的方法。看到没有,那我就调用so包里面的这个方法,把这个切片给我放进去。当我放进去过后呢,我们来输出一下这个切片,同学们看。我们输出这个切片。把这个case放进去啊,这写错了。把case放进去对吧。Kiss。把这个case放进去之后呢,我们输出一个,你们可以看到此时此刻,它这里面的K就是按照一个递增的顺序排列的,我们执行一下。
08:06
啊,这一方是不是因为没有引入这个包啊,我们是不是应该引入salt这个包,因为你用到人家的,你用到人家的函数了吗?对吧,好,我们执行一下。同学们可以看到此时此刻,这时我们可以看到它是一个递增的顺序,就K是按照一四八十进行排列的,对不对?好,现在呢,我们怎么办?第三步。就是便利切片,按照K来输出麦谱子就可以了,便利切片是不是很简单,便利切片的话我们一个是I。一个是值,其实这里面我要的是值了,就是它这个里面放的值,所以说这个时候我取的主要是它的值,这个值就是K。是不是它里面放的是K对不对,好,我for for。走。诶。
09:00
Range ing,对谁进行一个foreign啊,对我们这个case进行一个for。注意第一个是它的下标,第二个是它的值,值就是我们的K,然后呢,我输出就可以了。Print,好,我们可以看到,此时此刻我们就可以按照这个K来输出我们的map值了,来写一个。这样子啊,我给大家处理一下,我格式化一下。Map走。第一个是值等于把这个值也取出来。那第一个值呢,这个值,呃,这个这个K是不是就是这个值了K。对吧,值怎么取是不是,哎,这个应该是MAP1。好,我把MAP1写进去,MAP1它的这一个。K。就把这个值取了,取上它的K,就把它值取出来了,好,每取一次呢,我们给它一个。
10:03
换行,好,同学们看,此时此刻,这样就可以便利。按照我们K的顺序来输出我们这个map,这个时候顺序就有了,大家看一下跑起来。我们可以看到此时此刻它就稳定了。大家看这里。第一个map是K为一。是。80好,我们再运行一次,这个顺序是很稳定的,固定的啊。你看是不是。是不顺序按照这个K的递增顺序来输出我们这个麦,这就固定下来了,这个就是我们麦普。Map的一个排序处理。也就是说,如果同学们将来在做开发的时候,有一个业务需求,比如说我们要按照价格的高低,或者按照这个学生的编号来输出学生信息,那么我们就要按照老师这种写法,先把这个先把他的K进行一个遍历,放在一个切片里边,然后便利这个切片。
11:06
把K取出来,然后再输出对应的map值,这样就是按按照这个K的一种顺序来进行这个显示我们这里面的值了,能理解吧,他是这样做的啊好,关于这段代码呢,我给同学们板述一下。好,刚才我们讲的内容是map的排序,以及它的案例演示,对不对?好,我把。这地方反思一下。外部排序给他一个标题二。给他一个标题二基本介绍,刚才我们说了一下对吧,基本介绍诶这里面有三点。三点关于基本介绍的一个说明。好,我们整理一下这块板书。一个。第二第三个对吧。好,然后呢,我们这有一个案例演示。案例演示。
12:00
好,我把案例演示呢,给他一个标题三。好案例呢,就是刚才老师在Vs code里边写的这段代码,大家体验一下。走。从这里开始第26行对不对?26横截取到笔中去。好,这是我们的第一部分,紧接着呢,我们再把27行的下面的代码呢,也给大家板述一下。好,这里。好,往这里处理一下。好了。好,同学们看一下这块就是我们讲的关于map的排序的一个说明,好。Map排序呢,先给大家就介绍到这里。
我来说两句