如何在优先级队列中设置优先级

时间:2016-05-26 11:09:00

标签: java

我正在学习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?

请帮帮我。

这里我想要优先队列中默认排序的确切原因。

1 个答案:

答案 0 :(得分:2)

引用PriorityQueue的javadoc:

  

方法iterator()中提供的迭代器保证以任何特定顺序遍历优先级队列的元素

如您所见,使用PriorityQueueiterator()的排序无关紧要。现在,如果您开始使用poll()从队列中获取值,您将获得按字典顺序排列的值,即String自然顺序

如果您想要一个按插入顺序返回项目的队列,请使用常规Queue实施,例如LinkedListArrayDeque