3

我想知道如何(如果可能)通过HashMap[Int, Vector[Int]]. HashMap当然是可变的。

目前我将它设置为HashMap[Int, ArrayBuffer[Int]],但我可以更改 ArrayBuffer 中的每个单元格的事实让我感到不舒服,即使我相当确定我没有这样做。我会使用 aListBuffer[Int]但我希望快速随机访问邻居,因为我需要在图表上进行快速随机游走。AVector[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

4

1 回答 1

5

使用向量:

x += 3 -> (x(3) :+ 4)  //x.type = Map(3 -> Vector(1, 4))

您可能会注意到,如果没有现有密钥,这将失败,因此您可能希望将地图设置为

val x = new mutable.HashMap[Int, Vector[Int]] withDefaultValue Vector.empty
于 2012-04-27T22:02:19.807 回答