我有一本价格和数量的字典。我在一秒钟内多次获得价格和价值的更新,因此我不想将它们存储在数组中,因为字典要快得多。
let mainPriceValDict = [Double:Double]()
数据以JSON数组形式出现,因此我使用可编码来解析JSON并将其放入字典中。当我使用数据时,它需要按升序和/或降序排序,因为我循环遍历每个价格以获得一定的总数量。我正在循环的数组格式如下:
let loopingArray = [PriceQuantityEntry]()
struct PriceQuantityEntry {
let price : Double
let size : Double
}
我想对上面字典中的键进行排序,并将它们转换为PriceQuantityEntry数组。做这个的最好方式是什么?按升序和决定顺序。我已经尝试首先对所有键进行排序,然后抓取相关值并按顺序将它们放入数组中,但这似乎比此任务实际需要的处理更多。
我认为最好的方法是在结构中放置一个自定义初始值设定项,将字典值转换为类型PriceQuantityEntry
的值,但我不确定如何对排序起作用。
这是我目前正在做的工作。我觉得有一种更有效的方法可以完成。如果您觉得我应该将结构保持为数组而不是将其转换为字典,请告诉我。
loopingArray = self.mainPriceValDict.sorted { $0.0 < $1.0 }.map { PriceQuantityEntry(price: $0.0, size: $0.1) }
答案 0 :(得分:0)
如果您对单个条目进行了大量更新,则每次更改条目时,字典和数组都可能导致整个内存结构的内存副本。
我建议使用对象(类)而不是结构。这将允许您使用数组和字典来引用对象实例。字典将提供对更新的直接访问,并且该数组将允许以向前或向后顺序进行顺序处理。
[编辑]示例:
config