Scala - 将List [String]转换为元组列表[(Int,Int)]

时间:2016-11-07 18:08:46

标签: scala

我想从Source获取并将其转换为元组(Int,Int)。我是用foreach做的。

       val values = collection.mutable.ListBuffer[(Int, Int)]()

        Source.fromFile(invitationFile.ref.file).getLines().filter(line => !line.isEmpty).foreach(line => {
          val value = line.split("\\s")

          values += ((value(0).toInt, (value(1).toInt)))
        })

在不使用foreach的情况下编写相同代码的最佳方法是什么?

3 个答案:

答案 0 :(得分:3)

使用map,它会为您构建一个新列表:

Source.fromFile(invitationFile.ref.file)
.getLines()
.filter(line => !line.isEmpty)
.map(line => {
  val value = line.split("\\s")
  (value(0).toInt, value(1).toInt)
})
.toList()

答案 1 :(得分:1)

foreach应该是最终操作,而不是转换。

在您的情况下,您想使用函数map

val values = Source.fromFile(invitationFile.ref.file).getLines()
  .filter(line => !line.isEmpty)
  .map(line => line.split("\\s"))
  .map(line => (line(0).toInt, line(1).toInt))

答案 2 :(得分:0)

使用for理解:

val values = for(line <- Source.fromFile(invitationFile.ref.file).getLines(); if !line.isEmpty) {
  val splits = line.split("\\s")
  yield (split(0).toInt, split(1).toInt)
}