Scala-如何将文件中的数据映射到不同的格式?

Scala-如何将文件中的数据映射到不同的格式?,scala,collections,stream,Scala,Collections,Stream,我正在学习Scala的基础知识,并编写了一段代码,从csv文件中读取数据,然后用逗号将其拆分。现在我正试图解析数据,这样我就可以得到像这个map[Double,String]这样的map val stream : InputStream = getClass.getResourceAsStream("/sales.csv") val lines: Iterator[String] = scala.io.Source.fromInputStream(stream).getLines val

我正在学习Scala的基础知识,并编写了一段代码,从csv文件中读取数据,然后用逗号将其拆分。现在我正试图解析数据,这样我就可以得到像这个map[Double,String]这样的map

val stream : InputStream = getClass.getResourceAsStream("/sales.csv")
  val lines: Iterator[String] = scala.io.Source.fromInputStream(stream).getLines
  val map: Map[Double, String] = lines
    .map(_.split(",")
    .map(line => (line(0).toDouble, line(1).toString)))
    .toMap
所以我决定把它放到
Map[Double,String]
中,因为我的文件包含两个字段(saleId(Double)和saleType(String))。但是我得到了一个错误(类型Map[Nothing,Nothing]的表达式不符合预期的类型Map[Double,String])

我犯了什么错?我认为使用
行(0.toDouble,行(1.toString)进行映射将产生预期的映射[Double,String]

val stream : InputStream = getClass.getResourceAsStream("/sales.csv")
  val lines: Iterator[String] = scala.io.Source.fromInputStream(stream).getLines
  val map: Map[Double, String] = lines
    .map(_.split(",")
    .map(line => (line(0).toDouble, line(1).toString)))
    .toMap

假设您以以下格式获取输入:

val input = List("1.0,a","2.0,b","3.0,c","4.0,d")
然后编写函数

input.map(x => (x.split(",")(0).toDouble,x.split(",")(1) )).toMap
将以

scala.collection.immutable.Map[Double,String] = Map(1.0 -> a, 2.0 -> b, 3.0 -> c, 4.0 -> d)

假设您以以下格式获取输入:

val input = List("1.0,a","2.0,b","3.0,c","4.0,d")
然后编写函数

input.map(x => (x.split(",")(0).toDouble,x.split(",")(1) )).toMap
将以

scala.collection.immutable.Map[Double,String] = Map(1.0 -> a, 2.0 -> b, 3.0 -> c, 4.0 -> d)

你的括号有点错,应该是这样的:

val map: Map[Double, String] = lines
  .map(_.split(",")) // <- Added bracket
  .map(line => (line(0).toDouble, line(1).toString)) // <- Removed bracket
  .toMap
val-map:map[Double,String]=行

.map(u.split(“,”)/(第(0)行。toDouble,第(1)行。toString))//您的括号有点错误,应该是这样的:

val map: Map[Double, String] = lines
  .map(_.split(",")) // <- Added bracket
  .map(line => (line(0).toDouble, line(1).toString)) // <- Removed bracket
  .toMap
val-map:map[Double,String]=行
.map(u.split(“,”)/(第(0)行。toDouble,第(1)行。toString))//