诠释映射字符串使用此代码我试图输出对应于字符串值列表中一个Int值:当我期待1,2,2,1
生成在列表
val l = List("a" , "b" , "b" , "a");
var counter = 0;
var isAdded = new scala.collection.mutable.ListBuffer[String]();
val map = scala.collection.mutable.HashMap.empty[String,Int]
def getId(m : String) : Int = {
if(map.isDefinedAt(m)){
map.get(m).get
}
else {
map += m -> counter
counter = counter + 1
counter
}
}
(l.map(m => getId(m))).foreach(println)
1
2
1
0
被输出,每个INT是顺序以及它如何映射到List中的元素。如果List包含(“a”,“b”,“b”,“a”,“r”),则应生成1,2,2,1,3
。 我知道这是一个必要的解决方案尝试,但我试图在转换到功能之前尝试一个命令性的解决方案。
如何生成映射到列表中值的顺序Int值的唯一列表?
谢谢,但我收到错误:,类型不匹配; [error] found:Int(1) [error] required:String [error] val output = l.flatMap(c => map.get(c)+ 1) , 我改用:chars.map (c => map.get(c).get + 1) –