gpt4 book ai didi

iPhone SDK 嵌套 For 循环性能

转载 作者:行者123 更新时间:2023-12-03 17:30:55 26 4
gpt4 key购买 nike

我有一个字符串 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!");
}
}
}

上述代码的性能确实很慢,我想知道是否有更好的方法来做到这一点?

最佳答案

我将通过以下方式实现您的代码:

for (NSDictionary *a in apArr)
{
if ([aArr containsObject:[a objectForKey:@"id"]])
{
NSLog(@"Found!");
}
}

我仍然不确定 containsObject 的性能,但是,我想应该有 SDK 优化来比 O(n) 更快地查找对象。

已添加:

另一个建议。我想,“id”字段对于所有 NSDictionary 对象都是唯一的。如果是这样,您可以将 NSDictionaries 的 NSArray 重新映射到 NSDictionary:

来自:

索引 -> NSDictionary

至:

id -> NSDictionary

您将找到 O(1) 而不是 O(n) 的元素。

重新重新映射。您应该使用适当的格式(id -> 对象)创建 NSDictionary,或者可以通过以下方式重新映射数组:

NSMutableDictionary *md = [[NSMutableDictionary alloc] init];
for ( NSDicationary *a in apArr ) {
[md setObject:a forKey:[a objectForKey:@"id"]];
}

关于iPhone SDK 嵌套 For 循环性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2727829/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com