objective-c - 保持数组排序 - 在设置时、获取时还是稍后?

标签 objective-c arrays oop nsmutablearray sorting

作为学习客观 c/oop 的辅助工具,我正在设计一个 iOS 应用程序来存储和显示定期体重测量值。我有一个单例,它返回测量对象共享存储的可变数组。每次测量至少有一个日期和体重,我希望能够添加历史测量结果。

我想按日期顺序显示测量值。最好的方法是什么?据我所知,选项如下:1)添加测量时 - 每次添加测量后,我都会重写 addobject 以对共享存储进行排序,2)检索可变数组时,我对其进行排序,或者 3)我检索可变数组以共享存储中的任意顺序排列,然后在显示表格/图表时对其进行排序。

检索数据的频率可能比添加新数据的频率更高,因此选项 1 将减少共享存储的冗余排序 - 所以这是最好的方法,是吗?

最佳答案

您可以使用 (1) 的修改版本。您不必在每次插入新对象时对整个数组进行排序,而是使用此处描述的方法:https://stackoverflow.com/a/8180369/1187415将新对象插入到数组中的正确位置。

然后,对于每个插入,您只需进行二分搜索即可找到新对象的正确索引,并且数组始终处于正确的顺序。

既然您说检索数据的频率比添加新数据的频率更高,那么这似乎更有效。

关于objective-c - 保持数组排序 - 在设置时、获取时还是稍后?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15548779/

相关文章:

java - 如何将多个数组合并为一个?

jQuery 将元素的宽度设置为数组的值

javascript - 我应该使用方法还是子类?如果这是有道理的

java - 如何创建一个扩展其他两个接口(interface)的接口(interface)来定义java中的类型

objective-c - 对不是基于字符串的字符串的 nsarray 进行排序

iphone - 使用 UIRefreshControl

ios - 将单元格数据(即 cell.textlabel.text 和 cell.imageView.image)传递给另一个 View Controller

c# - 从数组中打印索引

java - 添加 protected 构造函数以允许子类提供不同的实现

iOS 8 UITableView 旋转错误