Sagen wir, ich habe 3 Matrizen von Schülern, [A, B, C], die untereinander nicht eindeutig sind (d. H. Das A-Feld könnte einen Schüler haben, der auch in Feld B zu finden ist). Ich suche nach einer effizienten Möglichkeit, diese Arrays so zu filtern, dass jedes von A, dann B und dann C eindeutig ist (dh der Schüler in den Arrays A und B erscheint am Ende in der A-Liste und wird aus der B-Liste entfernt) da A vor B ist). Wie kann ich dies tun, während die Array-Arrays A, B und C getrennt bleiben? (d. h. ich kann nicht einfach alle Schüler in ein Set werfen, weil sie dann ihre Assoziation mit der Liste verlieren, zu der sie ursprünglich gehören).Setzt den Sortieralgorithmus
Das Schülerobjekt hat eine ID-Eigenschaft, die zum Sortieren/Filtern verwendet werden kann. Das Spielzeug Problem für 3 Listen ist nur (es kann auf größere Listen erweitern, so dass Deshalb habe ich für eine optimale Lösung suchen)
A [1, 2, 3, 4]
B [5, 6, 1, 9]
C [3, 7, 5, 8]
Results
A [1, 2, 3, 4]
B [5, 6, 9] ->original order is preserved (i.e. 5 is before 6 which is before 9)
C [7, 8]
etwas wie 'B.removeAll (A)'? (Und wenn Sie größere Datenmengen haben, ist bekannt = new Set(); bekannt.addAll (A); B.removeAll (bekannt); bekannt.addAll (B); C.removeAll ... ') – njzk2