【发布时间】:2010-05-30 16:02:19
【问题描述】:
如何取两个NSArray,比较,然后返回差异个数,最好是不同对象的个数,例如:
数组 1: 一 二 三
数组 2: 二 四 一个
我希望它返回“1”
【问题讨论】:
-
为什么是一个而不是两个?
-
因为有一个元素是不同的。 1 有“三”,2 有“四”
标签: objective-c compare nsarray
如何取两个NSArray,比较,然后返回差异个数,最好是不同对象的个数,例如:
数组 1: 一 二 三
数组 2: 二 四 一个
我希望它返回“1”
【问题讨论】:
标签: objective-c compare nsarray
您可以通过使用中间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];
这样,只会删除常见的元素。
【讨论】:
NSSet。
我发现上面的答案没有考虑不同大小的数组。如果你按照上面的方法做,你应该检查哪个 array.count 更小,并且
[largerArray removeObjectsInArray:shorterArray];
或
我将它们都做成了 NSSet,然后进行了比较。
[set1 isEqualToSet:set2];
这样尺寸和顺序都得到妥善处理! (我不需要知道差异的数量)
【讨论】: