考虑一组数千个NSString
对象,在内存中。
NSString
在集合中搜索特定对象的最有效方法是什么?使用NSDictionary
就够了吗?还是保证NSSet
' 的搜索是 O(1) (找不到任何这样说的文档)?
同样的策略是否适用于NSData
对象?
考虑一组数千个NSString
对象,在内存中。
NSString
在集合中搜索特定对象的最有效方法是什么?使用NSDictionary
就够了吗?还是保证NSSet
' 的搜索是 O(1) (找不到任何这样说的文档)?
同样的策略是否适用于NSData
对象?
此页面显示以下有关集合的注释:
注意:如果集合中的对象具有良好的哈希函数,则访问元素、设置元素和删除元素都需要恒定的时间。如果散列函数很差(导致频繁的散列冲突),这些操作会占用线性时间。Foundation 中的 NSString 等类具有良好的散列函数。
因此,NSString
根据上述情况,您可以期待恒定的时间。
NSSet
在其实现中使用哈希表并测试哈希冲突中所有元素之间的相等性。因此,性能与其元素的哈希效率直接相关。