我只是寻找一种更好,更有效的方式来遍历给定的对象数组,并将每个对象的NSString
属性与仅包含NSStrings的另一个数组进行比较。更有效的方式来遍历NSString的数组并进行比较
我目前的代码使用两个for-each循环,但它不认为这是最有效的方法。
for (MYClass *foo in arrayOfMyClass) {
for (NSString *ID in arrayOfStringIDs) {
if ([foo.Id isEqualToString:ID]) {
//Do something
break;
}
}
}
我认为应该以某种方式放弃至少一个循环与一些很酷的技巧。
听起来很完美。谢谢。 – yinkou 2012-07-18 22:00:22
这是否比第二个循环更快? 我的意思是,什么containsObject:做?我只是好奇。 – yinkou 2012-07-20 19:08:53
我无法确定,因为[documentation](https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSSet_Class/Reference/Reference.html)很漂亮疏。然而,这种集合的优化算法会使用某种散列存储对象,然后依靠使用传递的对象的散列快速查找集合中是否存在匹配对象。通常,这在O(1)中平均完成。 – Tim 2012-07-20 20:11:46