Frage

Ich brauche einen Code-Schnipsel zu schreiben, das mehr Arrays und produziert den Satz vergleichen wäre, die die Daten in dem Arrays entsprechen, produzieren, die nur in Array A Datensatz, aber nicht in Array B, C, D, in Array B aber nicht in A, C, D, (dh dynamisch geschleift) in der Lage, eine beliebige Anzahl von Arrays zu handhaben. Der Code sollte anonyme Funktionen in Scala verwenden (das heißt nicht eine regelmäßige Anordnung wie Looping wie in Java).

War es hilfreich?

Lösung

Klingt wie Hausaufgaben zu mir. Die mit Abstand einfachste Weg, dies zu tun ist, um den Inhalt der Arrays A in eine Set zu werfen und die Entfernungsoperation verwenden. Dies wäre O (n) , wobei n = \ sum {| A |, | B |, | C |, ...}. Die folgende Lösung funktioniert für beliebigen 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
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top