你要的是这样的效果么
public static void main(String[] args) {
PriorityQueuepq = new PriorityQueue ();
pq.add(5);
pq.add(2);
pq.add(3);
pq.add(4);
System.out.println("取出了"+pq.poll()+",队列剩余"+Arrays.toString(pq.toArray()));
/**
* 假设3是我不满意的值,我要取到3后面的值
*/
if(pq.peek()==3){
System.out.println("3真不是我想要的,我可以接着往下处理么?ok,将3先保留吧");
int a = pq.poll();//将当前的第一级优先的值暂存下来,等第二级优先的值取出后再将其加入
pq.poll();
pq.add(a);
System.out.println("队列剩余"+Arrays.toString(pq.toArray()));
}
System.out.println("取出了"+pq.poll()+",队列剩余"+Arrays.toString(pq.toArray()));
}
打印效果:
取出了2,队列剩余[3, 4, 5]
3真不是我想要的,我可以接着往下处理么?ok,将3先保留吧
队列剩余[3, 5]
取出了3,队列剩余[5]
我觉得这个是优先队列,虽然poll时候会将优先级高的数据先取出,但是同样的,如果加进去是高优先级的数据 下次取的时候它依然还是高优先级的数据。
不明白你的意思,请问第一优先值跟第二优先值是什么关系,或者直接说他们是不是保存在同一个对象中的