我正在设计一个 Air 应用程序,需要在内存中存储数千条记录,并且需要通过各种键对它们进行有效排序。
我考虑使用 ByteArray
,因为这样可以避免普通 AS3 对象的所有开销,并且可以让我更有效地使用内存。
但是,挑战在于如何对 ByteArray
内的记录进行排序。我想到了两种可能性:
1- 在 AS3 中实现快速排序或堆排序,并以这种方式对数组进行排序。但是,我不确定这是否足够高效。例如,ByteArrays 没有复制内存块的方法;它必须逐字节完成。
2- 使用 C 创建一个 Air Native Extension (ANE),它采用 ByteArray 并对其进行排序。这样做的缺点是,对于它需要运行的所有平台来说,实现它会更困难。
你会推荐什么?您以前有做过类似事情的经验吗?
最佳答案
我想说使用数组或向量对象,可以通过 sortOn()
按你想要的任何键对数组进行排序,并通过 sort()
对向量进行排序,所以你可以实现你需要的任何行为,因为后者接受一个函数作为其参数,check here 。我相信你不会用 ByteArrays 得到任何结果,因为对对象进行排序实际上是对其中的链接进行排序,而 ByteArray 将包含实际数据。
关于actionscript-3 - 对 AS3 ByteArray 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14725302/