我在列表中有一些记录。 现在我想从该列表创建一个新的Map(Mutable Map),每个记录都有唯一的键。我希望实现这一点,我读取一个List并调用scala中名为map的高阶方法。
records.txt是我的输入文件
100,Surender,2015-01-27
100,Surender,2015-01-30
101,Raja,2015-02-19
预期产出:
Map(0-> 100,Surender,2015-01-27, 1 -> 100,Surender,2015-01-30,2 ->101,Raja,2015-02-19)
Scala代码:
object SampleObject{
def main(args:Array[String]) ={
val mutableMap = scala.collection.mutable.Map[Int,String]()
var i:Int =0
val myList=Source.fromFile("D:\\Scala_inputfiles\\records.txt").getLines().toList;
println(myList)
val resultList= myList.map { x =>
{
mutableMap(i) =x.toString()
i=i+1
}
}
println(mutableMap)
}
}
但我得到的输出如下
Map(1 -> 101,Raja,2015-02-19)
我想明白为什么它只保留最后一条记录。 有人可以帮助我吗?
答案 0 :(得分:3)
val mm: Map[Int, String] = Source.fromFile(filename).getLines
.zipWithIndex
.map({ case (line, i) => i -> line })(collection.breakOut)
这里(collection.breakOut)
是为了避免由toMap引起的额外解析。
答案 1 :(得分:1)
考虑
(for {
(line, i) <- Source.fromFile(filename).getLines.zipWithIndex
} yield i -> line).toMap
我们读取每一行,将索引值从零开始关联,并从每个关联中创建一个映射。