如何根据包含在另一个数组中的字符串在NSArray中查找匹配的字典

cohen72

我有一个充满字典的NSArray。

我想遍历它,并找到所有键值与单独数组中存在的任何字符串对象匹配的字典。

然后,我想将其添加到找到的所有对象的新结果数组中。

我现在就是这样做的,但是我想知道是否有更有效,更快的方法。

NSArray *arrayOfDictionaries, *arrayOfIDs;

NSMutableArray *results = [NSMutableArray array];

for (NSDictionary *dict in arrayOfDictionaries) {

    for (NSString *userID in arrayOfIDs) {

        if ([userID isEqualToString:dict[@"user_id"]]) {

            [results addObject:dict];

        }
    }
}

return results;
眼球

是的,通过使用以下NSArray containsObject:方法,您的代码可能会更简单

NSArray *arrayOfDictionaries, *arrayOfIDs;

NSMutableArray *results = [NSMutableArray array];

for (NSDictionary *dict in arrayOfDictionaries) {

    if ([arrayOfIDs containsObject:dict[@"user_id"]) {

        [results addObject:dict];

    }
}

return results;

请注意,尽管这段代码更易于阅读和理解,但它的运行时复杂度仍然与原始方法类似

这是因为尽管您发布的代码N^2在中间具有显式的运行时复杂性(嵌套的for循环),而我的新版本显然仅具有N复杂性,但containsObject:调用包含一个循环,因此仍然存在N^2复杂性。

如果您希望算法更有效-仅在这很重要的情况下,请不要过早优化!-您可以使用NSSet而不是NSArray来存储usersIDs这将更快,因为NSArray查找是线性时间,而NSSet使用哈希进行查找,并且比线性运行时查找要好。

请注意,如果要将自己的自定义对象放入中NSSet,则应在该对象上覆盖isEquals:hashcode有关更多信息,请参见覆盖isEqual:和哈希的最佳做法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何筛选从一个流中不包含在另一个sream字符串?

来自分类Dev

如何基于一个数据帧的行值是一个子字符串/包含在另一个数据帧的行值中来联接两个数据帧?

来自分类Dev

从PHP的另一个数组中查找MongoDB数组中的子字符串

来自分类Dev

如何查找包含元素与另一个数组中的其他元素匹配的数组的文档?

来自分类Dev

根据来自另一个数据集的列中的匹配字符串来填充列的值

来自分类Dev

检查字符串数组元素仅包含另一个数组中的元素

来自分类Dev

如何在字符串数组中查找重复的元素并将结果存储在另一个数组中

来自分类Dev

检查数组是否包含在PostgreSQL中的另一个数组中

来自分类Dev

在另一个数组中查找一个数组的匹配索引

来自分类Dev

XPath是否包含在一个XML元素或另一个XML元素中的字符串?

来自分类Dev

如何根据另一个数组 swift 3 在数组中包含元素

来自分类Dev

检查数组-值是否包含在另一个数组中?

来自分类Dev

检查数组的所有元素是否包含在另一个数组中

来自分类Dev

检查数组的元素是否包含在另一个数组的元素中

来自分类Dev

猫鼬。如何更新包含在另一个数组中的数组元素?

来自分类Dev

测试一个数组的元素是否包含在另一个数组中

来自分类Dev

Pyspark合并数据帧的一个数组包含在另一个数组中

来自分类Dev

检查一个数组是否包含在另一个数组中

来自分类Dev

检查一个数组是否包含在另一个数组中

来自分类Dev

检查一个数组项是否包含在另一个数组项中

来自分类Dev

如何有效地检查数组中的任何子字符串是否包含在另一个字符串中

来自分类Dev

如何有效地检查数组中的任何子字符串是否包含在另一个字符串中

来自分类Dev

如何根据另一个数据框中的部分字符串匹配将一列添加到一个数据框中?

来自分类Dev

Array.slice 使用包含在另一个数组中的索引号

来自分类Dev

用红宝石替换另一个数组中的字符串

来自分类Dev

搜索另一个数组中的字符串,例如mongodb中的字符串

来自分类Dev

如何从另一个数组中找到的一个数组中增加每个字符串元素?

来自分类Dev

如何将字符串拆分为一个数组,我想将其推入另一个数组中

来自分类Dev

检查一个字符串是否包含在另一个字符串中时的StackOverflow

Related 相关文章

  1. 1

    如何筛选从一个流中不包含在另一个sream字符串?

  2. 2

    如何基于一个数据帧的行值是一个子字符串/包含在另一个数据帧的行值中来联接两个数据帧?

  3. 3

    从PHP的另一个数组中查找MongoDB数组中的子字符串

  4. 4

    如何查找包含元素与另一个数组中的其他元素匹配的数组的文档?

  5. 5

    根据来自另一个数据集的列中的匹配字符串来填充列的值

  6. 6

    检查字符串数组元素仅包含另一个数组中的元素

  7. 7

    如何在字符串数组中查找重复的元素并将结果存储在另一个数组中

  8. 8

    检查数组是否包含在PostgreSQL中的另一个数组中

  9. 9

    在另一个数组中查找一个数组的匹配索引

  10. 10

    XPath是否包含在一个XML元素或另一个XML元素中的字符串?

  11. 11

    如何根据另一个数组 swift 3 在数组中包含元素

  12. 12

    检查数组-值是否包含在另一个数组中?

  13. 13

    检查数组的所有元素是否包含在另一个数组中

  14. 14

    检查数组的元素是否包含在另一个数组的元素中

  15. 15

    猫鼬。如何更新包含在另一个数组中的数组元素?

  16. 16

    测试一个数组的元素是否包含在另一个数组中

  17. 17

    Pyspark合并数据帧的一个数组包含在另一个数组中

  18. 18

    检查一个数组是否包含在另一个数组中

  19. 19

    检查一个数组是否包含在另一个数组中

  20. 20

    检查一个数组项是否包含在另一个数组项中

  21. 21

    如何有效地检查数组中的任何子字符串是否包含在另一个字符串中

  22. 22

    如何有效地检查数组中的任何子字符串是否包含在另一个字符串中

  23. 23

    如何根据另一个数据框中的部分字符串匹配将一列添加到一个数据框中?

  24. 24

    Array.slice 使用包含在另一个数组中的索引号

  25. 25

    用红宝石替换另一个数组中的字符串

  26. 26

    搜索另一个数组中的字符串,例如mongodb中的字符串

  27. 27

    如何从另一个数组中找到的一个数组中增加每个字符串元素?

  28. 28

    如何将字符串拆分为一个数组,我想将其推入另一个数组中

  29. 29

    检查一个字符串是否包含在另一个字符串中时的StackOverflow

热门标签

归档