Roh*_*ala 5 functional-programming scala
我试图将新值附加到现有键的Set(Values)上,但是它将替换现有值。
这是我的意见
val roads = Array(Array(0,1),Array(0,2),Array(1,2))
Run Code Online (Sandbox Code Playgroud)
预期产量:
Map(0 -> Set(1,2),1 -> Set(2))
Run Code Online (Sandbox Code Playgroud)
我的代码:
val roads = Array(Array(0,1),Array(0,2),Array(1,2))
var adjMatrix:Map[Int,Set[Int]] = Map()
for(i <- 0 until roads.size; j <- 1 until roads(i).size){
adjMatrix += (roads(i)(0) -> Set(roads(i)(j)))
}
Run Code Online (Sandbox Code Playgroud)
当我做的时候
adjMatrix.foreach(println)
Run Code Online (Sandbox Code Playgroud)
我得到以下结果,因为有两个键的名称为0,它替换了第0个索引处的(0,1)元素
(1,Set(2))
(0,Set(2))
Run Code Online (Sandbox Code Playgroud)
尝试
roads
.groupBy(a => a(0))
.map { case (key, value) => key -> (value.flatten.toSet - key) }
Run Code Online (Sandbox Code Playgroud)
哪个输出
Map(1 -> Set(2), 0 -> Set(1, 2))
Run Code Online (Sandbox Code Playgroud)