我需要(从输入流中)读取2列csv并返回Map。
文件score.txt
:
player1,21
player2,99
player3,143
无效代码:
Try(Source.fromInputStream(getClass.getResourceAsStream(s"$RelativePath/$fileName")).getLines().map(_.split(","))) match {
case Success(scoreMap) => scoreMap
case Failure(err) => //TODO add throw exception
}
第一行返回一个Iterator[Array[String]]
,但是如何返回一个Map[String,String]
?
P.S。我已经在堆栈上尝试了各种“ CSV到MAP”解决方案,每个解决方案看起来都是用自己的语言编写的,并且都出现了我无法解决的错误。
答案 0 :(得分:0)
假设您从下一行收到的输入
Source.fromInputStream(getClass.getResourceAsStream(s"$RelativePath/$fileName")).getLines().map(_.split(","))
采用以下格式
val inputArr: Iterator[Array[String]] = Array(
Array("player1", "21"),
Array("player2", "99"),
Array("player3", "143")
).toIterator
要将此Iterator[Array[String]]
转换为Map[String, String]
,可以编写以下函数
val output = inputArr.map{ arr =>
arr(0) -> arr(1)
}.toMap
它将为您提供输出
output: scala.collection.immutable.Map[String,String] = Map(player1 -> 21, player2 -> 99, player3 -> 143)
如果这能回答您的问题,请告诉我。