Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么PriorityQueue中的元素没有按其自然顺序打印?_Java_String_Sorting_Priority Queue - Fatal编程技术网

Java 为什么PriorityQueue中的元素没有按其自然顺序打印?

Java 为什么PriorityQueue中的元素没有按其自然顺序打印?,java,string,sorting,priority-queue,Java,String,Sorting,Priority Queue,为什么PriorityQueue对字符串的排序不同 String[] sa = {">ff<", "> f<", ">f <", ">FF<", "> 2<", ">2 <", "> F<"}; PriorityQueue<String> q = new Prio

为什么
PriorityQueue
对字符串的排序不同

String[] sa = {">ff<", "> f<", ">f <", ">FF<", "> 2<", ">2 <", "> F<"};
PriorityQueue<String> q = new PriorityQueue<>();
for(String s : sa) {
    q.offer(s);
}
System.out.println("q : " +q);
Arrays.sort(sa);
System.out.println("sa : " +Arrays.toString(sa));

List<String> myList = Arrays.asList(sa);
Collections.sort(myList);
System.out.println("myList : " +myList);
String[]sa={>ff ff 22 F来自:

在方法迭代器()中提供的迭代器不能保证以任何特定顺序遍历优先级队列的元素。如果需要有序遍历,请考虑使用数组。排序(pq.toAlayle())。

这意味着元素不一定按其自然顺序存储在队列中。因此,如果要按其自然顺序获取元素,必须单独排序或使用队列操作,例如:

while( !q.isEmpty() ) {
    System.out.println(q.remove());
}