Невозможно добавить элементы в изменяемый список Scala внутри цикла foreach. - PullRequest
0 голосов
/ 12 марта 2019

Я пытаюсь добавить элементы в mutable scala list, как показано ниже. Я читаю значения из кадра данных строка за строкой, извлекаю значения столбца с именем «_title» и добавляю его в список. Но когда цикл завершен, список все еще пуст. это код:

import scala.collection.mutable.ListBuffer
val flatK = dfR.withColumn("UserValue", explode(col("UserValue")))
var colListA = new ListBuffer[String]()
//    var colSet : List[String] = List()
    for(i <- 0 until Integer.parseInt(dfR.count().toString)){
      flatK.filter($"columnIndex" === i).foreach{
        r=>
          val columnName = r.getAs[Row]("UserValue").getAs[String]("_title")
//          println(columnName)
          colListA.append(columnName)
      }
    }

println(columnName) на самом деле печатает значение, которое я хочу поместить в мой список. Мой фрейм данных dfR выглядит так:

 +--------------------------------------------------------------+-----------+
|UserValue                                                     |columnIndex|
+--------------------------------------------------------------+-----------+
|[, last_mod_date, 2009-01-14T13:40:53]                        |0          |
|[, object_string, SOLIDS]                                     |0          |
|[, last_mod_date, 2009-01-13T22:58:30]                        |1          |
|[, object_string, TORSO]                                      |1          |

Когда я делаю

colListA += "elements"
colListA += "adds"

Я вижу добавленные элементы. Но не внутри этой foreach петли. Кто-нибудь может сказать мне, что мне попробовать? В основном, я ожидаю, что colList будет заполнен last_mod_date и object_string.

...