3

を介して(可変)グラフの隣接リスト表現を作成する方法(可能であれば)を考えていましたHashMap[Int, Vector[Int]]HashMapもちろん変更可能です。

現在、私はそれを として設定していHashMap[Int, ArrayBuffer[Int]]ますが、ArrayBuffer の各セルを変更できるという事実は、私がそうしていないことはかなり確信していますが、私を不快にさせます。私は a を使用しますListBuffer[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 に答える