Schnittpunkt von NSMutableArrays finden
Habe ich drei NSMutableArray mit Namen, die Hinzugefügt werden, um die Listen nach verschiedenen criterieas.
Hier sind meine arrays pseudocode:
NSMutableArray *array1 = [@"Jack", @"John", @"Daniel", @"Lisa"];
NSMutableArray *array2 = [@"Jack", @"Bryan", @"Barney", @"Lisa",@"Penelope",@"Angelica"];
NSMutableArray *array3 = [@"Jack", @"Jerome", @"Dan", @"Lindsay", @"Lisa"];
Ich auf der Suche nach einem vierten array enthält die Schnittmenge dieser drei arrays. In diesem Fall zum Beispiel sein:
NSMutableArray *array4 = [@"Jack",@"Lisa"];
Weil alle drei Arrays haben jack und lisa als ein element. Ist es einfach, dies zu tun?
InformationsquelleAutor der Frage aeciftci | 2011-05-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
NSMutableSet
:Das einzige Problem mit diesem ist, dass Sie verlieren, Reihenfolge der Elemente, aber ich denke (in diesem Fall), ist das OK.
Als wurde darauf hingewiesen, in den Kommentaren (danke, Q80!), iOS 5 und OS X 10.7 wurde eine neue Klasse namens
NSOrderedSet
(mit einemMutable
Unterklasse), die es Ihnen ermöglicht, zum durchführen dieser gleichen Kreuzung Operationen während noch Aufrechterhaltung der Ordnung.InformationsquelleAutor der Antwort Dave DeLong
Haben Sie einen Blick auf dieser Beitrag.
Kurz gesagt: wenn Sie verwenden können, NSSet anstelle von NSArray, dann ist es trivial (NSMutableSet hat
intersectSet:
).Andernfalls können Sie bauen ein NSSet von Ihrem NSArray und gehen Sie zurück zu dem obigen Fall.
InformationsquelleAutor der Antwort sergio
AUSGABE:
Dritte ist : (
)
InformationsquelleAutor der Antwort Vijay-Apple-Dev.blogspot.com
Diese sauberer ist als die
NSSet
Ansatz, und Sie verlieren nicht die ursprüngliche Bestellung.InformationsquelleAutor der Antwort trapper
Hier ist eine funktionierende Variante von links oben
InformationsquelleAutor der Antwort Boris Elenin