2016-12-18 8 views
-1

У меня есть 3 ListBuffers одинаковой длины.found String, Required (String, String, String, Int): tuples-scala

devicenamelist: ListBuffer [String]

DateList: ListBuffer [String]

wordcountssortedlistbuf [(String, Int)]

Теперь мне нужно, чтобы преобразовать их в формат

ListBuffer (String, String, String, Int)

я попытался сделать следующее

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) 

} 

Это дает мне ошибку следующим образом

[ошибка] найдено Строка

Обязательный (String, String, String, Int)

Как работает операция добавления списка вверху когда я хотел создать (String, String, String, Int) только одну строку. Я что-то упускаю?

Благодаря

ответ

4

Вы пропускаете набор скобок в вашей += линии, но, пожалуйста, не делайте этого, это больно мои глаза, чтобы увидеть кто-то что-то подобное в Скале писать.

Попробуйте что-нибудь подобное вместо этого:

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

Помимо операторов на кортеж - http://stackoverflow.com/a/13790933/409976 –

+0

@KevinMeredith это не операторы кортежей, которые повреждают глаза в коде OP в так как изменяемый буфер заполняется императивным циклом. Но операторы кортежей, чрезмерно специфический набор текста и индексированный доступ к спискам тоже не помогают ... – Dima

Смежные вопросы