2

我正在重构一个涉及传递大量数组的项目。目前,每个返回数组的方法都会在返回之前对其进行排序。这并不理想有几个原因——有很多重复的代码,对数组排序两到三次效率低下,编写新函数太容易但忘记在返回之前对数组进行排序。

我正在寻找一种方法来保证数组始终按字母顺序排列。我目前的想法是子类化NSMutableArray和/或NSArray创建一个按字母顺序排列的数组类。我需要覆盖所有创建或修改要调用的数组的方法,super然后对其进行排序。

这听起来合理吗,还是有更好的方法?

编辑:由于提到了性能问题,我将包含我项目中的相关信息。速度不是一个重要的问题。整个过程只需要几秒钟,而且该工具只是经常使用。所以简单和明显的正确性更重要。

此外,数组的用例是特定的。当返回一个数组时,调用者总是至少访问数组中的每个元素一次。

4

2 回答 2

4

平衡二叉树是保持项目排序的标准且有效的方法。几乎任何使用普通数组进行随机访问的方法都会很慢。跳过列表也很有效,您可以将功能添加到数组类中。

于 2010-10-05T18:44:49.283 回答
3

查看CHDataStructures。它是一个具有许多自排序数据结构的框架,例如平衡二叉树等等。

于 2010-10-05T19:02:17.040 回答