我将在plist中存储值列表并检索它们。每次调用搜索方法时,将搜索列表中的值(每次都可以更改)。列表中可能会有大约10个值。
NSArray或NSDictionary是否更适合搜索?
我认为NSArray更合适,因为现在,至少,我没有键值对数据集,只是一个列表。
有人可以确认并提供搜索阵列的最佳方法吗?
由于
答案 0 :(得分:0)
字典搜索比数组更快,因为键是经过哈希处理的。使用数组,系统必须检查所有项目,直到找到匹配项。
NSSet的文档说,集合在测试成员资格方面要比数组更快。如果没有为每个键存储的值,最好的选择可能是将数据作为数组存储到plist中。在运行时,读取数组,并使用NSSet类方法setWithArray:
如果您的数据集很大(数千个项目),我建议使用字典进行性能测试,其中所有值都是针对NSSet的NSNull。 (使用您使用objectForKey:
的字典,使用containsObject:
方法设置
答案 1 :(得分:0)
忽略计时最好的选择是使用NSArray。 NSArray有各种有用的方法,如
(NSArray *)filteredArrayUsingPredicate:(NSPredicate *)predicate
和
(NSIndexSet *)indexesOfObjectsPassingTest:(BOOL (^)(id obj, NSUInteger idx, BOOL *stop))predicate
可用于在数组中进行搜索。
答案 2 :(得分:0)
问题是概念性的:
如果您有值列表,则不得使用NSDictionary 。相应的数据结构为NSArray
或NSSet
。
基本上,NSSet
比NSArray
更快,因为不必考虑订单等。
因此,如果您只需搜索值且顺序无关紧要,要使用的最佳数据结构为{{ 1}}(或NSSet
如果你需要它可变的话。)