我知道,队列按照先进先出(FIFO)的顺序进行操作,但我不确定为什么以下Java示例程序会产生以下输出:
Java示例代码
public static void main(String args[]) {
Queue<String> q = new PriorityQueue<String>();
q.add("3");
q.add("1");
q.add("2");
Iterator<String> itr = q.iterator();
while (itr.hasNext()) {
System.out.println(itr.next() + " ");
}
}
输出:
1
3
2
根据Java文档中
java.util.PriorityQueue.PriorityQueue()
的说明:Creates a PriorityQueue with the default initial capacity (11) that orders its elements according to their natural ordering.
Q1) 请问有人能解释一下为什么输出是1 3 2,以及自然顺序是如何起作用的吗?
Q2) 我已经查过自然排序以及它与Comparable/Comparor的关系,但它们不仅仅是用于升序或降序排列吗?
LinkedList
。现在已经更新了Java示例,改用PriorityQueue
。 - Arun Kumar