От Java documentation:PEEK() в интерфейсе очереди
УДАЛИТЬ() и опрос() методы удаления и вернуть головку очереди.
Методы element() и peek() возвращают, но не удаляют, голову очереди.
Из второго пункта он говорит, что метод peek()
возвращает элемент заголовка очереди, а затем как его не возвращать элемент заголовка очереди в следующей программе?
public class PQ {
public static void main(String[] args) {
PriorityQueue<String> pq = new PriorityQueue<String>();
pq.add("carrot");
pq.add("apple");
pq.add("banana");
System.out.println(pq.poll() + ":" + pq.peek()); // prints apple and banana rather than apple and apple
}
}
После того, как первый элемент (морковь) удаляется, яблоко становится глава очереди (в соответствии с FIFO в очереди), чтобы выглядывать() метод должен возвращать яблочный право?
Example2:
public class PQ {
public static void main(String[] args) {
PriorityQueue<String> pq = new PriorityQueue<String>();
pq.add("carrot");
pq.add("apple");
pq.add("banana");
System.out.println(pq); // prints [apple, carrot, banana] -> it should be [apple, banana, carrot] right? if it is following natural sorting order
}
}
'PriorityQueue' сортирует элементы, значение что порядок вашей очереди (голова) 'яблоко',' банан', 'морковь' (хвост). Таким образом, вызов 'poll()' удаляет и возвращает голову ('apple'), делая' banana' новой головой, как показано в следующем вызове 'peek()'. – Vulcan
так что 'PriorityQueue' не соответствует FIFO? – kittu
Элементы хранятся в порядке, а затем FIFO. В порядке не порядок, в который он вставлен, но порядок приоритета. –