工作中遇到的排序问题
2015-08-27 00:00
483 查看
最近在用cocos2dx lua写客户端的模块,在写到背包中中遇到要排序的问题。
背包中放有大量的道具,都是用listview来加载这些道具的视图,问题来了。这些道具需要按照顺序来一次排列,每个道具含有等级,颜色,位置。排列的优先级是等级>颜色>位置。
服务器端发来的道具数据,都是无序的。开始的时候,我在想用神马插入排序,但是想想发现,它有三个要排列的属性。等级相同,看颜色大小,颜色大小再相同,就看位置。排序还真是麻烦,而且低效。主程想到了一个很灵巧的方法。他把三个属性粘合在一起。
local keyList = { }
local str = nil
local dataList = { }
for k , v in pairs(data) do
str = data.lv..data.color..data.pos..k
str = tonumber(str)
keyList .key = str
keyList .value = v
table.insert(dataList ,keyList )
end
table.sort(dataList ,function(a,b) return a.key > b.key end)
这样子得到的结果就是一次型排好序的,用pairs循环输出的时候,就可以了。很灵巧的方法吧。还是主程厉害啊
背包中放有大量的道具,都是用listview来加载这些道具的视图,问题来了。这些道具需要按照顺序来一次排列,每个道具含有等级,颜色,位置。排列的优先级是等级>颜色>位置。
服务器端发来的道具数据,都是无序的。开始的时候,我在想用神马插入排序,但是想想发现,它有三个要排列的属性。等级相同,看颜色大小,颜色大小再相同,就看位置。排序还真是麻烦,而且低效。主程想到了一个很灵巧的方法。他把三个属性粘合在一起。
local keyList = { }
local str = nil
local dataList = { }
for k , v in pairs(data) do
str = data.lv..data.color..data.pos..k
str = tonumber(str)
keyList .key = str
keyList .value = v
table.insert(dataList ,keyList )
end
table.sort(dataList ,function(a,b) return a.key > b.key end)
这样子得到的结果就是一次型排好序的,用pairs循环输出的时候,就可以了。很灵巧的方法吧。还是主程厉害啊
相关文章推荐
- 如何成为一个优秀的Java程序猿
- 保利威视自定义右键菜单设置
- extjs 表头居中,数据靠左的写法
- Qt Designer中的layoutstretch属性
- vmware使用已有linux系统的物理磁盘分区
- [C/C++]使用boost时无法连接到正确的库,提示fatal error LNK1104
- python使用pip安装gevent时提示Unable to find vcvarsall.bat
- CENTOS JAVA 安装
- android开源组件
- spring mvc ligerui
- jquery stop
- SSH免登陆
- html5调用摄像头
- 针对url参数的加密解密算法(原创)
- 设计资源好站
- 关于打造全屏model层
- cjson.decode()的返回值该如何读取
- 创业的第二十七天
- 如何在64位版本Linux上开发运行32位应用程序
- eclipse安装pydev