我想知道如何(如果可能的话)我可以通过HashMap[Int, Vector[Int]]
来制作(可变)图表的邻接列表表示。 HashMap
当然是可变的。
目前我已将其设置为HashMap[Int, ArrayBuffer[Int]]
,但我可以更改ArrayBuffer中的每个单元格这一事实让我感到不舒服,即使我很确定我没有这样做。我会使用ListBuffer[Int]
但我想快速随机访问邻居,因为我需要在图上进行快速随机游走。 Vector[Int]
可以解决这个问题,但无论如何都可以解决这个问题吗?
据我所知(在REPL中尝试过这个),这不起作用:
scala> val x = new mutable.HashMap[Int, Vector[Int]]
x: scala.collection.mutable.HashMap[Int,Vector[Int]] = Map()
scala> x(3) = Vector(1)
scala> x(3) += 4 // DOES NOT WORK
我需要能够随时附加到它并随机访问其中的任何元素(给定索引)。这可能吗?
谢谢! -kstruct
答案 0 :(得分:5)
使用Vector:
x += 3 -> (x(3) :+ 4) //x.type = Map(3 -> Vector(1, 4))
如果没有现有密钥,您可能会注意到这将失败,因此您可能希望将地图设置为
val x = new mutable.HashMap[Int, Vector[Int]] withDefaultValue Vector.empty