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());
}