LUA对Map进行排序

Posted 糖果的实验室

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LUA对Map进行排序相关的知识,希望对你有一定的参考价值。

Lua中最常见的数据结构就是Table, 用Table表示Map很容易, 但早期Lua没有提供一个针对Map数据结构的排序方法,下面用Moonscript实现了一个Map型数据结构排序函数方法。


比如,我们在统计某些元素的个数时,[["a", 100], ["b",10],["c",1]]这种数据结构,元素的个数都比较少的,简单的排序算法都可以解决,数据变大时,我们可能会采用更复杂的算法去实现。


其实实现的原理比较简单,就是用两个Table,分别存储Map的Key与Value,用比较简单的冒泡排序或是选择排序对Key的Table结构进行排序,在排序的过程中移动Table中Key的存储位置的同时,也安对应的下标移动Value数组的位置,这样当Key排序好的同时,Value也被排序好了。


下面的例子没有直接使用Lua实现,用了Moonscript实现了这个简单的过程,然后通过Moonc解释程序把Moonscript翻译成Lua, Moonscript天然支持类,并且用Moonscript实现的函数相对也比Lua简洁一些。



降序排序:


升序和降序的方法比较简单,直接将与max比较的“>”大于号,改成小于号,或是想反。


升序排序:


以上是关于LUA对Map进行排序的主要内容,如果未能解决你的问题,请参考以下文章

如何按 Lua 中的值对表进行排序?

在 Lua 中对表 [] 进行排序

如何对map中的value进行排序

对map集合进行排序

Map对象在JS中排序显示

如何对ArrayList中的某个属性进行排序