Ich muss ein Code-Snippet schreiben, das mehrere Arrays vergleicht und die Menge erzeugt, die mit den Daten in diesen Arrays übereinstimmt, die Daten nur in Array A erzeugen, aber nicht in Array B, C, D, in Array B, aber nicht in A, C, D, wobei eine beliebige Anzahl von Arrays (dh dynamisch geloopt) gehandhabt werden kann. Der Code sollte anonyme Funktionen in Scala verwenden (d. H. Nicht wie eine normale Array-Schleife wie in Java).Umgang mit Unionen, Teilmengen und Obermengen in Scala
1
A
Antwort
2
Klingt wie Hausaufgaben für mich. Der einfachste Weg, dies zu tun, besteht darin, den Inhalt von Array A in eine Set
zu werfen und die remove-Operation zu verwenden. Dies wäre O (n) wo n = \ Summe {| A |, | B |, | C |, ...}. Die folgende Lösung funktioniert für beliebige Iterable
, nicht nur Array
:
def compareArrays[A](arrs: List[Iterable[A]]) = arrs match {
case a :: tail => {
val set = a.foldLeft(Set[A]()) { _ + _ }
tail.foldLeft(set) { _ -- _ }
}
case Nil => Nil
}