我有三个NSMutableArray,其中包含根据不同评论添加到列表的名称。

这是我的数组伪代码:

NSMutableArray *array1 = [@"Jack", @"John", @"Daniel", @"Lisa"];
NSMutableArray *array2 = [@"Jack", @"Bryan", @"Barney", @"Lisa",@"Penelope",@"Angelica"];
NSMutableArray *array3 = [@"Jack", @"Jerome", @"Dan", @"Lindsay", @"Lisa"];

我想找到第四个数组,其中包括这三个数组的交集。例如,在这种情况下,它将是:
NSMutableArray *array4 = [@"Jack",@"Lisa"];

因为所有三个数组都将jack和lisa作为元素。有简单的方法吗?

最佳答案

使用NSMutableSet:

NSMutableSet *intersection = [NSMutableSet setWithArray:array1];
[intersection intersectSet:[NSSet setWithArray:array2]];
[intersection intersectSet:[NSSet setWithArray:array3]];

NSArray *array4 = [intersection allObjects];

唯一的问题是您失去了元素的顺序,但是我认为(在这种情况下)没关系。

正如注释中指出的(感谢Q80!),iOS 5和OS X 10.7添加了一个名为NSOrderedSet(带有Mutable子类)的新类,该类使您可以在保持顺序的同时执行这些相同的交集操作。

关于iphone - 查找NSMutableArray的交集,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6023548/

10-09 23:14