我正在阅读 javadocs 中的 PriorityQueues ,它提到了 tie-break 一词。我无法理解这个词是什么意思。我希望有人能解释一下。
问问题
6180 次
2 回答
8
在 Java 中,比较是使用compare(a,b)
方法(用于比较器)或a.compareTo(b)
方法(用于可以比较的类实例)完成的。这个方法应该在任何时候返回一个负数a < b
,一个正数 whena > b
和0
when a = b
。
然而,有时人们只是使用返回值0
来表示a
并且b
是无法比较的(一些排序不是总的)。在这种情况下,PriorityQueue
必须决定哪个元素先行。这是打破平局。具体来说,一些优先级队列保留了插入零比较元素的顺序,因此在这种情况下,插入时间是决胜局。然后对于compareTo()
总是返回的元素集合0
,优先级队列的行为就像一个普通队列。
于 2013-06-26T21:43:18.297 回答
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
}
}
于 2013-06-26T21:42:05.393 回答