NSDictionary VS NSArray+NSPredicate:哪个更快/推荐

Posted

技术标签:

【中文标题】NSDictionary VS NSArray+NSPredicate:哪个更快/推荐【英文标题】:NSDictionary VS NSArray+NSPredicate: which is faster/recommented 【发布时间】:2011-09-13 20:27:26 【问题描述】:

从集合中获取对象的速度更快?

一个。使用 [dictionary objectForKey:key]; 在 NSDictionary 中搜索 或

b.使用 [NSPredicate predicateWithFormat:@"someKey like %@",someKeyValue]; 在 NSArray 中搜索

在这两种情况下,我都会创建集合。

问候!

【问题讨论】:

【参考方案1】:

假设一个编程良好的字典,这会快得多。一个好的字典应该使用哈希图在恒定时间 O(1) 内找到您的密钥。如果数组已排序,知道这一点并使用二进制搜索,它可以优化为 O(log n) 的二进制搜索,否则它将不得不线性查看每个对象,即 O(n) 操作。最好的办法是,如果你能以某种方式将键变成直接索引,可能是一次性排序。

【讨论】:

一本好的字典会在 O(1) 中找到您的密钥。哈希图具有恒定时间查找。 “好”是一个非常灵活的词。基于散列的字典和基于树的字典在不同的情况下都有其吸引力。 NS/CFDictionary 通常是基于哈希的结构,但保留比这慢的权利(参见 CFDictionary.h)。

以上是关于NSDictionary VS NSArray+NSPredicate:哪个更快/推荐的主要内容,如果未能解决你的问题,请参考以下文章

NSArray 和 NSDictionary

NSArray 中的 NSDictionary

来自 plist 文件的 NSArray 或 NSDictionary

从 NSArray 过滤 NSDictionary

带有 NSArray 的 UITableview 包含 NSDictionary 和 NSDictionary 包含另一个 NSDictionary

将包含 NSArray 的 NSDictionary 转换为 JSON