打破平局意味着什么?

时间:2013-06-26 21:38:13

标签: java priority-queue

我正在阅读javadocs中的PriorityQueues,它提到了打破平局一词。我无法理解这个词是什么意思。我希望有人能解释一下。

2 个答案:

答案 0 :(得分:6)

在Java中,使用compare(a,b)方法(对于比较器)或a.compareTo(b)方法(对于可以比较的类实例)进行比较。该方法应该在a < b时返回负数,在a > b时返回正数,在0时返回a = b

然而,有时人们只使用返回值0来表示ab是无法比拟的(某些排序不是全部)。在这种情况下,PriorityQueue必须决定哪个元素首先出现。这是打破平局。特别是一些优先级队列保留了插入零比较元素的顺序,因此在这种情况下插入时间是决胜局。然后,对于compareTo()总是返回0的元素集合,优先级队列的行为就像普通队列一样。

答案 1 :(得分:3)

如果您有一个使用Node.Score分配优先级的优先级Que,如果两个分数相同,则表示您具有平局。

您可以对可比较的元素实施先进先出的打破平局。如果两个分数相同,则优先考虑首先添加的节点。

if(NodeA.getScore() == NodeB.getScore()){
    //this is a tie
    if(NodeA.getOrderAdded() > NodeB.GetOrderAdded(){
        //NodeA has priority
    } else {
        //NodeB has priority
    }
}
相关问题