假设我有一个名为arrayA -> {@"A", @"B", @"C", @"D", @"E"}
的数组(NSArray)。我有另一个名为arrayB -> {@"D", @"E", @"F", @"G", @"H"}
的数组(NSArray)。
对我来说最有效的方法是获得两个数组:1。一个数组是两个数组的子集,所以在这种情况下它将是{@" D",@ " E"}和arrayB中唯一的子集,所以{@" F",@" G",@" H"} 。
如果你看一下这个静脉图,这会更容易:http://theconsigliori.com/blog/wp-content/uploads/2009/09/venn-diagram.jpg
A和B是数组,我想得到2个数组,1. A&B
2. B-(A&B).
我正在使用objective-c / cocoa-touch,但欢迎任何一般的想法。该阵列将长约6000个元素,我在iPad上这样做。
谢谢!
答案 0 :(得分:10)
两个数组的交集:
NSMutableSet *intersectionDict = [NSMutableSet setWithArray:arrayA];
[intersectionDict intersectSet:[NSSet setWithArray:arrayB]];
NSArray *intersectionArray = [intersectionDict allObjects];
arrayB中不存在于arrayA中的对象的子集:
NSMutableArray *arrayC = [NSMutableArray arrayWithArray:arrayB];
[arrayC removeObjectsInArray:arrayA];
答案 1 :(得分:0)
方法intersectSet,如本文所述:
NSArray - check if objects are in an array? 以Apple效率的方式解决您的问题。应该够了吗?