通过在Scala中读取列表元素创建地图
我在一张单子上有一些记录。 现在我想从该列表中创建一个新的映射(可变映射),每个记录都有一个唯一的键。我想通过读取列表并调用scala中名为map的高阶方法来实现这一点 records.txt是我的输入文件通过在Scala中读取列表元素创建地图,scala,Scala,我在一张单子上有一些记录。 现在我想从该列表中创建一个新的映射(可变映射),每个记录都有一个唯一的键。我想通过读取列表并调用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
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)
我想了解它为什么要单独保留最后一条记录。
有人能帮我吗?考虑一下
(for {
(line, i) <- Source.fromFile(filename).getLines.zipWithIndex
} yield i -> line).toMap
(用于{
(行,i)行
在这里,我们读取每一行,从零开始关联一个索引值,并从每个关联中创建一个映射。考虑
(for {
(line, i) <- Source.fromFile(filename).getLines.zipWithIndex
} yield i -> line).toMap
val mm: Map[Int, String] = Source.fromFile(filename).getLines
.zipWithIndex
.map({ case (line, i) => i -> line })(collection.breakOut)
(用于{
(行,i)行
在这里,我们读取每一行,关联一个从零开始的索引值,并从每个关联中创建一个映射
val mm: Map[Int, String] = Source.fromFile(filename).getLines
.zipWithIndex
.map({ case (line, i) => i -> line })(collection.breakOut)
这里的(collection.breakOut)
是为了避免toMap造成的额外解析
这里是
(collection.breakOut)
是为了避免toMap造成的额外解析。非常感谢这种简洁的方法,我也刚刚发现了我的代码中的错误,只是再次编辑了我的代码,它成功了。再次感谢Hanks这种简洁的方法,我也刚刚发现了我的代码中的错误,只是再次编辑了我的代码,它成功了。再次感谢