比较两个数组并返回差异数

时间:2010-05-30 16:02:20

标签: objective-c compare nsarray

如何获取两个NSArray,比较它们,然后返回差异的数量,最好是不同对象的数量,例如:

数组1:     一     二     3

数组2:     二     四     一个

我希望返回“1”

2 个答案:

答案 0 :(得分:23)

您可以使用中间NSMutableArray

来完成此操作
NSArray *array1 = [NSArray arrayWithObjects:@"One", @"Two", @"Three", nil];
NSArray *array2 = [NSArray arrayWithObjects:@"Two", @"Four", @"One", nil];
NSMutableArray *intermediate = [NSMutableArray arrayWithArray:array1];
[intermediate removeObjectsInArray:array2];
NSUInteger difference = [intermediate count];

通过这种方式,只会删除常用元素。

答案 1 :(得分:2)

我发现上面的答案没有考虑到不同大小的数组。如果你这样做,你应该检查哪个array.count更小和

[largerArray removeObjectsInArray:shorterArray];

OR

我把它们作为NSSets然后进行比较。

[set1 isEqualToSet:set2];

这样大小和顺序都得到妥善处理! (我不需要知道差异的数量)

相关问题