Ordering
val pq = new PriorityQueue[(Int,List[Int])]
とすると怒られます。List[Int]が比較できないからのようです。このようなときは自前の比較のためのオブジェクトを与えます。
import scala.collection.mutable.PriorityQueue val o = Ordering[Int].on[(Int,_)](_._1) val pq = new PriorityQueue[(Int,_)]()(o) pq.enqueue((2, List(1))) pq.enqueue((4, List(2))) pq.enqueue((6, List(1, 1))) println (pq.dequeue) // (6,List(1, 1))
これで怒られなくなりました。型の一部を省略できるんですね。でもScalaのPriorityQueueは降順でしたね。
val o = Ordering[Int].on[(Int,_)](-_._1)
これで昇順になります。