優先順位付キュー

優先順位付キューを使おうとしたときにヘルプを見ても、使い方がよくわからなかったためメモ。*1

http://www.scala-lang.org/api/current/scala/collection/mutable/PriorityQueue.html

クラスはscala.collection.mutable.PriorityQueue
enqueueで要素を追加

scala> import scala.collection.mutable.PriorityQueue
import scala.collection.mutable.PriorityQueue

scala> val a = new PriorityQueue[Int]()
a: scala.collection.mutable.PriorityQueue[Int] = PriorityQueue()

scala> a.enqueue(1)

scala> a.enqueue(2)

scala> a.enqueue(10)

scala> a
res4: scala.collection.mutable.PriorityQueue[Int] = PriorityQueue(10, 2, 1)

dequeueで要素を取り出す

scala> a.dequeue
res5: Int = 10

scala> a.dequeue
res7: Int = 2

scala> a.dequeue
res8: Int = 1

優先順位を変えるには、以下のようにnewの際に追加でOrdering型の引数を与える。

val b = new PriorityQueue[Int]()(scala.math.Ordering.Int.reverse)

*1:collection汎用のメソッドが多すぎて、enqueueとdequeueを見逃しただけなんですが