使用什么基础数据结构来实现NSOrderedSet

时间:2016-08-07 05:25:06

标签: objective-c nsorderedset

NSOrderedSet似乎能够给出散列表和数组的O(1)查找速度,就像对象的排序一样?用于实现此目的的数据结构是什么?它是两个的组合,例如:Hashtable和一个单独的数组,其中索引i具有与Hashtable中的对象相对应的键?

1 个答案:

答案 0 :(得分:2)

我们不知道Apple如何选择实施此数据结构。找出答案的唯一方法是对基金会框架进行逆向工程。但这不是一件有用的事情,Apple可以在每次更新时更改实现和底层数据结构。所以依赖于这个生产应用程序会非常愚蠢,因为它可能随时破坏应用程序。

如果你想自己实现这个,那么使用哈希表和数组的方法就可以了。最好的方法是将对象存储在数组中,并让哈希映射存储由对象键入的数组索引。

当然,还有其他可能的方法可以实现不同的性能特征。它可能只是一个构成containsObject:test O(n)的数组,或者它可能只是一个哈希表(对象为键,索引为值),使objectAtIndex:操作O(n)。