2016-12-18 10 views
-1

Ich habe 3 ListBuffer von gleicher Länge.gefunden String, Erforderlich (String, String, String, Int): tuples-scala

devicenamelist: ListBuffer [Zeichenfolge]

datelist: ListBuffer [Zeichenfolge]

wordcountssortedlistbuf [(String, Int)]

Jetzt muss ich sie das Format

konvertieren

ListBuffer (Zeichenfolge, Zeichenfolge, Zeichenfolge, Int)

Ich habe versucht, die folgende

var sortedrecords=scala.collection.mutable.ListBuffer[(String,String,String,Int)]() 

for(i <- 0 to devicenamelist.length) 
{ 

sortedrecords+=(devicenamelist(i),datelist(i),wordcountssortedlistbuf(i)._1,wordcountssortedlistbuf(i)._2) 

} 

zu tun Es gibt mir Fehler als

[Fehler] folgt gefunden String

Required (String, String, String, Int)

Wie ist die Liste anhängen Operation an der Spitze g Ich habe nur eine einzige Zeichenkette erhalten, als ich beabsichtige (String, String, String, Int). Fehle ich etwas?

Dank

Antwort

4

Sie sind eine Reihe von Klammern in Ihrer += Linie fehlt, aber, bitte, tun Sie das nicht, es ist meine Augen weh tut jemand so etwas in scala schreiben, um zu sehen.

Probieren Sie etwas wie dieses stattdessen:

val sortedrecords = devicenamelist.zip(datelist).zip(wordcountssortedlistbuf) 
.map { case ((devicename, date), (word, count)) => 
    (devicename, date, word, count) 
} 
+0

Abgesehen auf Tupel-Betreiber - http://stackoverflow.com/a/13790933/409976 –

+0

@KevinMeredith es nicht die Tupel Operatoren, die meine Augen weh in den Code des OP so sehr wie ein veränderbarer Puffer durch eine Imperativschleife gefüllt wird. Aber Tupeloperatoren, zu spezifisches Tippen und indizierter Zugriff auf Listen helfen auch nicht ... – Dima