队列不自然排序 [英] Queue not ordering naturally

查看:55
本文介绍了队列不自然排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

可能重复:
为什么在Java中的PriorityQueue中会发生这种奇怪的顺序?/a>

Possible Duplicate:
Why is this strange order happens in PriorityQueue in java?

请参见下面的代码:

public static void main(String[] args) {
    Queue<String> q = new PriorityQueue<String>();
    q.offer("car");
    q.offer("airplane");
    q.offer("bicycle");
    Iterator<String> i = q.iterator();
    while(i.hasNext())
        System.out.print(i.next() + " ");
}

有人可以解释一下为什么输出

Can someone explain me why the output is

airplane car bicycle

代替

airplane bicycle car

?

在API中以来,表示优先级队列的元素是根据其自然顺序进行排序的.

Since in the API it says that the elements of the priority queue are ordered according to their natural ordering.

推荐答案

PriorityQueue基于优先级堆.尽管未对元素进行排序,但此数据结构允许非常快地检索最小元素.将元素添加到PriorityQueue的速度比添加到基于树的TreeSet的速度快.由于未对元素进行排序,因此如API所述,迭代器不会以任何特定顺序返回元素".

PriorityQueue is based on a priority heap. This data structure allows to retrieve the least element very quickly though the elements are not sorted. Adding elements to PriorityQueue is faster than to TreeSet which is tree based. Since the elements are not sorted, the iterator, as API says, "does not return the elements in any particular order".

这篇关于队列不自然排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆