我正在学习Java,并试图学习集合中的优先级队列。我尝试从一个网站使用以下示例:
import java.util.*;
class S
{
public static void main(String args[])
{
PriorityQueue<String> queue=new PriorityQueue<String>();
queue.add("Amit");
queue.add("Vijay");
queue.add("Karan");
queue.add("Rahul");
queue.add("Jai");
System.out.println("iterating the queue elements:");
Iterator<String> itr=queue.iterator();
while(itr.hasNext())
{
System.out.println(itr.next());
}
}
}
这里的结果如下:
Amit
Jai
Karan
Vijay
Rahul`
我期望的结果是:
Amit
Vijay
Karan
Rahul
Jai
我无法理解结果如何变化,以及使用哪种类型的正常或默认优先级。
如果我想获得与期望相同的结果,我应该使用prioiryqueue做什么?
请帮我。
在这里,我想要优先级队列中默认排序的确切原因。
引用javadoc PriorityQueue
:
在方法提供的迭代
iterator()
是不保证遍历优先级队列中的元素中的任何特定顺序。
如您所见,PriorityQueue
使用时,的顺序无关紧要iterator()
。现在,如果你开始从队列中取值使用poll()
,你会得到在字典顺序的值,即在自然秩序的String
。
如果您想要一个按插入顺序返回项目的队列,请使用常规Queue
实现,例如LinkedList
或ArrayDeque
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句