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