Scala-如何将文件中的数据映射到不同的格式?
我正在学习Scala的基础知识,并编写了一段代码,从csv文件中读取数据,然后用逗号将其拆分。现在我正试图解析数据,这样我就可以得到像这个map[Double,String]这样的mapScala-如何将文件中的数据映射到不同的格式?,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
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))//