Scala - 可变映射
Scala - Mutable Map
有什么方法可以通过使用变量在scala中创建可变映射吗?
我正在读取带有 source.fromFile("abc.csv").getlines 的 csv 文件。我希望此文件的第 1 2 列成为键,其余作为值。我想对第二个文件做同样的事情,这样我就可以根据密钥比较这两个文件并找出不同之处。
例如:文件 abc.csv 如下:
公司、Empid、名称
1,10,Abc
1,11,PQR
2,10,XYZ
我想要 o/p 作为 Map(110->Abc,111->PQR, 210->XYZ)
我尝试通过以下方式实现它:
var keymap = collection.mutable.Map[Int,String]()
val content = Source.fromFile("abc.csv").getLines;
val data = content.drop(1); //to remove header
for (line <-data){
val x = line.substring(0,1).toInt;
val y = line.substring(2,4).toInt;
var key = (x*100) + y;
var value = line.substring(9);
var keymap += (key,value);
}
但它给出的错误是 -
:60: 错误:类型不匹配;
发现:整数
必需:(整数,字符串)
键盘映射 +=(键,值)
^
有人可以提出我做错了什么或者有更好的方法吗?
谢谢!
如果 keymap 是可变的,你为什么把它当作 var,把它当作 val.Try this.
scala> val tasks = mutable.Map[Int,String]()
tasks: scala.collection.mutable.Map[Int,String] = Map()
scala> tasks += (1,"Book a movie ticket")
<console>:14: error: type mismatch;
found : Int(1)
required: (Int, String)
tasks += (1,"Book a movie ticket")
scala> tasks += (1 -> "Book a movie ticket")
res13: tasks.type = Map(2 -> " movie ticket", 1 -> Book a movie ticket)
所以,你必须改变这个
keymap += (key-> value)
有什么方法可以通过使用变量在scala中创建可变映射吗? 我正在读取带有 source.fromFile("abc.csv").getlines 的 csv 文件。我希望此文件的第 1 2 列成为键,其余作为值。我想对第二个文件做同样的事情,这样我就可以根据密钥比较这两个文件并找出不同之处。 例如:文件 abc.csv 如下: 公司、Empid、名称 1,10,Abc 1,11,PQR 2,10,XYZ
我想要 o/p 作为 Map(110->Abc,111->PQR, 210->XYZ)
我尝试通过以下方式实现它:
var keymap = collection.mutable.Map[Int,String]()
val content = Source.fromFile("abc.csv").getLines;
val data = content.drop(1); //to remove header
for (line <-data){
val x = line.substring(0,1).toInt;
val y = line.substring(2,4).toInt;
var key = (x*100) + y;
var value = line.substring(9);
var keymap += (key,value);
}
但它给出的错误是 - :60: 错误:类型不匹配; 发现:整数 必需:(整数,字符串) 键盘映射 +=(键,值) ^
有人可以提出我做错了什么或者有更好的方法吗? 谢谢!
如果 keymap 是可变的,你为什么把它当作 var,把它当作 val.Try this.
scala> val tasks = mutable.Map[Int,String]()
tasks: scala.collection.mutable.Map[Int,String] = Map()
scala> tasks += (1,"Book a movie ticket")
<console>:14: error: type mismatch;
found : Int(1)
required: (Int, String)
tasks += (1,"Book a movie ticket")
scala> tasks += (1 -> "Book a movie ticket")
res13: tasks.type = Map(2 -> " movie ticket", 1 -> Book a movie ticket)
所以,你必须改变这个
keymap += (key-> value)