如何在Objective-C中求两个数组的交集?

22

我有两个数组。Array1包含15个对象,而Array2包含4个对象。这两个数组中有2个共同的对象,我只想获得这2个对象的结果数组。

这应该类似于两个Set的交集,但在Objective C中如何操作数组呢?请帮忙解决。谢谢。


4
创建两个集合,并使用这些集合进行交集操作,以此来处理你的数组。注意不要改变原始意思。 - Ricard Pérez del Campo
1
请查看此链接:https://dev59.com/N3M_5IYBdhLWcg3wNwQv#1475656 - HarshIT
感谢@Hadley和Ricard,我使用NSSet解决了过滤结果的问题。终于得到了我的结果数组..!! - Dishant
1个回答

56

使用NSMutableSet

NSMutableSet *set1 = [NSMutableSet setWithArray: array1];
NSSet *set2 = [NSSet setWithArray: array2];
[set1 intersectSet: set2];
NSArray *resultArray = [set1 allObjects];

1
这里set1应该是NSMutableSet,因为NSMutableSet有intersectSet方法的扩展。 - Paresh Navadiya
2
如果这些数组非常大,比如每个数组有2000个对象,那么这个方案的效果如何?这是一个可扩展的解决方案吗? - zumzum
值得一提的是,为了提高效率,我们为什么要使用 NSSet!使用 NSSet 的代码将比等价的 for 循环更快(运行时效率更高)。 - occulus
@Akhrameev,我拒绝了您的编辑建议,因为没有任何地方要求对集合进行排序。请随意将您的建议作为新答案添加。 - jcesarmobile

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接