の時刻の最高値をJavaのTreeSet
で削除する場合は、treeSet.pollFirst()
を使用します。これはScalaのmutable.TreeSet
クラスに相当するものですか?ScalaのTreeSetとJavaのTreeSet - poll?
とにかく、私が実際に望むのは、removeMax
、add
、updatePriority
を対数時間で表示できるヒープのような優先順位キューのデータ構造です。 mutable.PriorityQueue
は対数時間でdeque
(すなわちremoveMax
)を私に許可していますが、ログ時に優先順位を更新する方法はありません(私はひっくり返ってスキャンしてアイテムを削除してから再追加する必要があります)線形時間)。同様にmutable.TreeSet
は、対数時間で(ハックリ削除と再追加による)優先順位を更新することができますが、removeMax
(つまりpollFirst
)の操作はありません。どのコレクションコンテナを使用する必要がありますか?私は外部の依存関係を参照しないでください。
'updatePriority'はJavaの' TreeSet'でどのように動作すると思いますか? – sharakan
簡単(匿名クラスでTreeSetをオーバーライドして外部コンパレータを定義したと仮定します)。ノードを削除して追加するだけです。私の例を見てください。ここの行19と行33-36を見てください:https://github.com/pathikrit/scalgos/blob/master/temp/SandBox/AStar.java – pathikrit
右は意味があります。ノードを更新する前に削除する必要があります。 – sharakan