3

NSOrderedSet 似乎能够为哈希表和数组提供 O(1) 的查找速度,比如对象的排序?用于实现此目的的数据结构是什么?它是两者的组合,例如:哈希表和一个单独的数组,其中索引 i 具有与其在哈希表中的对象相对应的键?

4

1 回答 1

2

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

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

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

于 2016-08-07T08:13:28.203 回答