我无法理解PriorityQueue
Java 中的顺序。据我了解,它们是基于堆的,它们不能提供精确的迭代顺序作为插入顺序。我想知道然后根据priorityQueue 对自己进行排序。给定代码:
PriorityQueue<String> pq = new PriorityQueue<String>();
pq.offer("hepqo");
pq.offer("bro");
pq.offer("wassup");
pq.offer("okay");
pq.offer("bingo");
pq.offer("first");
pq.offer("last");
pq.offer("ssup");
System.out.println("polled "+pq.poll());
System.out.println(pq);
String str[] = pq.toArray(new String[0]);
Arrays.sort(str);
for(String str1:str){
System.out.println(str1);
}
产生输出:
polledbingo
[bro, hepqo, first, okay, ssup, wassup, last]
bro
first
hepqo
last
okay
ssup
wassup
即使我将其转换为数组,订单也会丢失。
我感觉不到这甚至是字符串的自然排序。
有什么办法可以保持优先队列的插入顺序吗?
他们是根据什么分类的?