我正在学习Scala基础知识,并编写了一个代码来从csv文件中读取数据并以逗号分隔。现在,我正在尝试解析数据,以便获得类似Map [Double,String]
的地图。所以我决定将其放入Map[Double, String]
,因为我的文件包含两个字段(saleId(双精度)和saleType(字符串))。但是我遇到了一个错误(Map [Nothing,Nothing]类型的表达式与预期的Map [Double,String]类型不一致)。
我这里的错误是什么?我认为使用line(0).toDouble, line(1).toString
进行映射会导致预期的Map [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
答案 0 :(得分:2)
您的括号略有错误,应该是这样:
val map: Map[Double, String] = lines
.map(_.split(",")) // <- Added bracket
.map(line => (line(0).toDouble, line(1).toString)) // <- Removed bracket
.toMap
答案 1 :(得分:0)
假设您输入的格式为
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)