我有一个字符串ID的NSArray和NSDictionary对象的NSDictionary.我正在循环遍历字符串id数组以匹配NSDictionary中的id值.
大约有200个NSDictionary对象,只有5个左右的字符串ID.
我目前的代码是这样的:
for (NSString *Str in aArr) {
for (NSDictionary *a in apArr)
{
if ([a objectForKey:@"id"] == Str)
{
NSLog(@"Found!");
}
}
}
Run Code Online (Sandbox Code Playgroud)
上面代码的性能非常慢,我想知道是否有更好的方法来做到这一点?
我将通过以下方式实现您的代码:
for (NSDictionary *a in apArr)
{
if ([aArr containsObject:[a objectForKey:@"id"]])
{
NSLog(@"Found!");
}
}
Run Code Online (Sandbox Code Playgroud)
我仍然不确定containsObject性能,但是,我想应该有SDK优化来比O(n)更快地找到对象.
添加:
另一个建议.我想,"id"字段对于所有NSDictionary对象都是唯一的.如果是这样,您可以将NSArray的NSDrary重新映射到NSDictionary:
从:
index - > NSDictionary
至:
id - > NSDictionary
你会发现O(1)而不是O(n)的元素.
重新映射.您应该使用适当的格式(id - > object)创建NSDictionary,也可以按以下方式重新映射数组:
NSMutableDictionary *md = [[NSMutableDictionary alloc] init];
for ( NSDicationary *a in apArr ) {
[md setObject:a forKey:[a objectForKey:@"id"]];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
579 次 |
| 最近记录: |