2011-08-19 6 views
3

Disons que j'ai un tableau (NSArray) appelé arrayA -> {@"A", @"B", @"C", @"D", @"E"}. Et j'ai un autre tableau (NSArray) appelé arrayB -> {@"D", @"E", @"F", @"G", @"H"}. Quel est le moyen le plus efficace pour moi d'obtenir deux tableaux: 1. Un tableau qui est un sous-ensemble des deux, alors dans ce cas ce sera {@ "D", @ "E"} et un sous-ensemble qui est unique dans arrayB, donc {@ "F", @ "G", @ "H"}.NSArray moyen le plus efficace pour ce faire:

Il est plus facile si vous regardez ce schéma ême: http://theconsigliori.com/blog/wp-content/uploads/2009/09/venn-diagram.jpg

A et B sont des tableaux, je veux obtenir 2 tableaux, 1. A&B2. B-(A&B).

J'utilise objectif-c/cacao-touch, mais Toute idée générale est la bienvenue. Le tableau va durer environ 6000 éléments et je le fais sur un iPad.

Merci!

+0

Ce n'est pas une question iPad ou Objective-C, plutôt un CS-basics question, à mon humble avis. Peut-être que cela peut vous aider alors: http://stackoverflow.com/questions/2406097/efficient-algorithm-to-find-a-maximum-common-subset-of-two-sets – Kheldar

Répondre

10

intersection des deux tableaux:

NSMutableSet *intersectionDict = [NSMutableSet setWithArray:arrayA]; 
[intersectionDict intersectSet:[NSSet setWithArray:arrayB]]; 
NSArray *intersectionArray = [intersectionDict allObjects]; 

Sous-ensemble d'objets dans arrayB qui ne sont pas présents dans ARRAYA:

NSMutableArray *arrayC = [NSMutableArray arrayWithArray:arrayB]; 
[arrayC removeObjectsInArray:arrayA]; 
+0

+1 bien que cela ne conserve pas la commande. –

+0

@Dave DeLong D'accord. Bien que je ne sois pas sûr si, dans ce cas, la commande importe. Quoi qu'il en soit, il vaut la peine de mentionner. – albertamg

+0

Cependant, mon lien l'a déjà déclaré. Je trouve ennuyeux quand des multiples d'une question diluent la recherche de réponses, cette question aurait dû être fusionnée ... – Kheldar

0

La méthode intersectSet, comme il est dit dans ce post:

NSArray - check if objects are in an array? résout votre problème de manière Apple efficacité. Cela devrait suffire?

+1

Eh bien, je me demande sérieusement pourquoi mon réponse intersectSet, en soulignant à une question déjà répondu, vaut votes négatifs, lorsque la même réponse donnée un peu plus tard sans le lien vaut la peine de positifs ... WTH. – Kheldar

Questions connexes