【发布时间】:2015-06-17 13:27:32
【问题描述】:
我已经像这样定义了一个优先级队列
import scala.collection.mutable.PriorityQueue
...
val queue = new PriorityQueue[(Int,Int)]()
我想使用这个排序:
如果我们比较队列中的两个项目 A 和 B,如果其 (Int,Int) 元组的第一个元素大于 B,则 A 大于 B。如果它们相同,则如果其 (Int,Int) 元组的第二个元素小于,则 A 大于 B。
如何定义这种排序方式?
【问题讨论】:
-
向 OP 添加代码
-
简化了我的帖子以解决问题的核心
-
另外,回答编辑前的问题:PriorityQueue没有被弃用,只有
deprecatedInheritance,所以你不应该extends它,但可以正常使用它。您可以使用queue += item或queue.enqueue(item)添加项目,使用queue.head查找最大的项目,并使用queue.dequeue()获取+删除最大的项目 -
+= 和 enqueue 或者 + 调用 enqueue 之间有什么显着区别吗?
-
enqueue接受几个项目并将它们全部添加:q.enqueue(a, b, c, d)添加 a、b、c 和 d。++=接受一个 iterable 项并添加所有项。+=只接受一个项目。++也采用序列,但在添加队列之前克隆队列。
标签: algorithm scala priority-queue