所以我的应用程序中有NSMutableArray
这样填充的内容如下:
NSMutableArray
--Object 1 (NSMutableDictonary)
--Value (i) for key (key)
--Value (i) for key (key)
--Object 2 (NSMutableDictonary)
--Value (i) for key (key)
--Value (i) for key (key)
我需要能够从主NSMutableArray
中选择一个对象,方法是查找与NSMutableDictonary
个键之一的值匹配的键...
我知道我可以像这样运行一个循环来实现这个目标:
for (NSMutableDictionary *object in arrayObject) {
if ([[object objectForKey:@"keyToSearch"] integerValue] == keyToCompare) {
return [object objectForKey:@"keyToReturn"];
}
}
然而我担心的是,如果这个数组增长(它可以做什么),那么这需要时间来对它进行搜索..
所以我想知道有没有其他方法可以检索相同的结果但效率更高?
由于
利安
答案 0 :(得分:1)
搜索显然需要在数组中的字典数量中采用线性时间。你不会通过使用不同的搜索方式解决这个问题。你可以重写你的搜索以使用NSPredicate
,它会稍微缩短一点但不会更快。
如果您想更快地进行搜索,则必须修改数据结构。或者,您可以创建NSDictionary
作为查找表,其中NSDictionary
的键值为keyToSearch
,值为数组中的NSMutableDictionaries
尽管如此,除非你的阵列确实真的很大,否则搜索时间可以忽略不计,你不应该担心它。
答案 1 :(得分:0)
最终,任何数组的枚举都会花费时间,随着数组大小的增长而增长。如果你有任何方法提示它的位置,它可能会使它更快,但除此之外,快速枚举可能是以你想要的方式运行数据的最快方式。
除非您经历数百个对象,否则所花费的时间应该可以忽略不计。