Я читаю о PriorityQueues в javadocs, и в нем упоминается термин tie-break. Я не мог понять, что означает этот термин. Надеюсь, кто-то может объяснить.Что означает разрыв связи?
ответ
Если у вас есть приоритетный Que, который использует Node.Score для назначения приоритета, если два счета одинаковы, у вас есть галстук.
Вы можете реализовать переключение между первым и первым в сопоставимых элементах. Если два показателя одинаковы, приоритет присваивается узлу, который был добавлен первым.
if(NodeA.getScore() == NodeB.getScore()){
//this is a tie
if(NodeA.getOrderAdded() > NodeB.GetOrderAdded(){
//NodeA has priority
} else {
//NodeB has priority
}
}
В Java, сравнение выполняется с использованием методы compare(a,b)
(для компараторов) или a.compareTo(b)
метода (для экземпляров классов, которые могут быть сопоставлены). Этот метод должен возвращать отрицательное число, когда a < b
, положительное число, когда a > b
и 0
, когда a = b
.
Однако иногда люди используют только возвращаемое значение 0
для обозначения a
и b
несравнимы (некоторые заказы не являются суммарными). В этом случае PriorityQueue
должен решить, какой элемент идет первым. Это неразрывное соединение. В частности, некоторые очереди приоритетов сохраняют порядок, в который вставлены элементы с нулевым сравнением, поэтому в этом случае время вставки является тай-брейкером. Затем для набора элементов, где compareTo()
всегда возвращает 0
, очередь приоритетов будет действовать как обычная очередь.
См. Http://en.wikipedia.org/wiki/Tiebreaker –
@JonSkeet: Я тоже это видел. Ссылаясь на спортивную метафору, вряд ли можно осветить, особенно если вторым языком пользователя является английский. –
@RobertHarvey: Я не согласен - я думаю, что в контексте документации («Глава этой очереди является наименьшим элементом в отношении указанного порядка.Если несколько элементов привязаны к наименьшему значению, голова является одним из этих элементов - - связи сломаны произвольно ») резюме википедии (« В играх и спортах тай-брейк или тай-брейк используется для определения победителя среди игроков или команд, которые связаны в конце конкурса или набора конкурсов »), должны достаточно, чтобы выработать смысл. –