Java优先级队列中的compareTo工作不稳定

Java优先级队列中的compareTo工作不稳定,java,Java,我在课堂上使用的compareTo函数 public int compareTo(Book b) { if(id>b.id){ return 1; }else if(id<b.id){ return -1; }else{ return 0; } } 我用来迭代PriorityQueue的代码是: Iterator it = queue.iterator(); while(it.ha

我在课堂上使用的compareTo函数

public int compareTo(Book b) {  
    if(id>b.id){  
        return 1;  
    }else if(id<b.id){  
        return -1;  
    }else{  
    return 0;  
    }

}
我用来迭代PriorityQueue的代码是:

Iterator it = queue.iterator();
while(it.hasNext()){
  Book b = (Book)it.next();
  System.out.println(b.id);
}
这样的输出会有什么问题?
调用queue.remove()并进行迭代后,顺序似乎是正确的。
PriorityQueue的迭代器不能保证按照元素类(
Book
)的
可比
实现定义的顺序返回元素

PriorityQueue
的Javadoc:

此类及其迭代器实现集合和迭代器接口的所有可选方法方法Iterator()中提供的迭代器不保证以任何特定顺序遍历优先级队列的元素。如果需要有序遍历,请考虑使用数组。排序(pq.toAlayle())。
看看这个问题:ty代表链接
Iterator it = queue.iterator();
while(it.hasNext()){
  Book b = (Book)it.next();
  System.out.println(b.id);
}