![]() |
1
43
根据您的代码,您严格要求相同数量的元素,第一个数组的每个对象都应该在第二个数组中,反之亦然。 最快的方法是对两个数组进行排序并进行比较。 前任:
|
![]() |
2
13
如何将两个数组转换为集合并进行比较。
使用比较
|
|
3
3
使用containsObject:方法,而不是迭代整个数组。
这样地
|
![]() |
4
3
我试着让公认的答案发挥作用,但这并不是最适合我的情况。 我找到了 this answer 所有的功劳都归功于@joel kravets的方法。 基本上,使用比较器进行排序可以更容易地使用对象进行排序——因此,我在尝试使用上述解决方案时遇到了问题。
以前,我曾尝试过使用其他类似于上面的答案,使用break来遍历循环,但最终这个答案最简单,可能是因为它的速度,而且最后我们有了if语句,可以根据它们是相同还是不同来放置代码。 感谢Anoop让我走上正轨,感谢Joel帮助我提高效率 |
![]() |
5
2
如果要检查两个数组是否包含相同的重复项,只需使用NSCountedSet即可。这就像一个NSSet,但集合中的每个对象都有一个计数,告诉你它被添加的频率。所以
无论你怎么做,这都会很耗时,所以你可以考虑是否有特殊情况可以更快地处理。这些数组通常是相同的,还是几乎相同,或者99%的时候它们是不同的,99%的时候array1的随机元素不在array2中?数组是否经常排序?在这种情况下,您可以检查在相同的位置是否有相同的对象,然后只考虑那些不相同的对象。如果一个数组包含对象a、b、c、d、e,而另一个数组则包含a、b,x、d、y,那么您只需要比较数组[c,e]与[x,y]。 |
![]() |
6
1
它将适用于您的需求。它会尽快返回布尔值。 |
![]() |
7
1
这样,复杂度是O(N^2),如果你遵循这种方法,你就无法用较低的复杂度来完成。相反,如果对两个数组进行排序,然后进行比较,则可以使用O(N log(N))来执行此操作。通过这种方式,在对它们进行排序后,您将在其他N个操作中使用isEqualToArray:。 |
![]() |
8
1
主要优点是您可以将它用于任何类型的对象:自定义、系统、NSDictionary。例如,我需要知道我的UINavigationController的堆栈是否包含MySearchResultsVC和MyTopMenuItemsVC:
|
![]() |
9
0
我知道已经很晚了,但我只想分享我所做的。。
这就像比较 "@[@1,@2,@3,@4]" == "[@3,@2,@1,@4]" ..这显然是错误的。。 |
![]() |
10
-5
我想这样可以:
返回bool; |