2017-06-29 5 views
4

Ich bin neu in Scala Collections und derzeit möchte ich eine bestimmte Liste von Zeichenfolgen in ein Tupel von zwei Listen (List[String], List[String]), die Liste der Palindrom-Strings und Rest der Eingabe-Strings enthält.Liste in scala nicht aktualisiert werden

Zum Beispiel wenn der Eingang ist List("racecar", "abcd", "lilil", "effg") Ausgang (List("racecar", "lilil"), List("abcd", "effg")) sollte

ich eine Lösung Filter bekommen haben. Aber derzeit versuche ich meine Lösung mit foldLeft zu verfeinern. Mein neuer Ansatz ist wie folgt:

def stringTuples2(strings: List[String]): (List[String], List[String]) = { 
strings.foldLeft((List[String](), List[String]()))((b, a) => { 
    if (a.equals(a.reverse)) { b._1 :+ a; b } 
    else { b._2 :+ a; b } 
})} 

Ich bin nicht sicher, was ich falsch mache, aber die Ausgabe für diese Lösung ist Tuple von zwei leeren Listen, das heißt (List(), List()).

Hilfe ist willkommen. Vielen Dank!

+3

Dies scheint ein perfekter Anwendungsfall für 'partition':' myList.partition (x => x.reverse == x) ' – Akavall

+0

Dank @Akavall für wertvolle Input! –

Antwort

8

Ihr Versuch b zu modifizieren schafft eine neue List Sie dann den neuen List wegzuwerfen und b zurückkehren, die unverändert ist. Nehmen Sie die ;b Teil und senden Sie das aktualisierte Tupel: (b._1 :+ a, b._2) oder (b._1, b._2 :+ a)

BTW, hier ist eine andere Herangehensweise an die Lösung.

List("racecar", "abcd", "lilil", "effg").partition(s => s == s.reverse) 
+0

Danke, @jwvh! Ihre Erklärung hat mir wirklich geholfen, das Problem zu verstehen. Außerdem verstehe ich, dass 'partition()' mein Leben in solchen Anwendungsfällen wirklich erleichtern wird, nur versuche ich, die verschiedenen Funktionen und ihre (möglichen) Vorbehalte zu lernen. Danke nochmal! –

+0

Der beste Weg, jemandem auf dem Stack-Overflow zu danken, ist, seine Antwort zu akzeptieren, wenn es die beste Antwort ist, die Sie haben, und es löst Ihre Frage. –

+1

@RyanTheLeach, hab es geschafft! Ich verstehe, es ist ein gutes Lernen von Stack Overflow-Protokolle, zusätzlich zu Scala! :) –

Verwandte Themen