我的程序正常工作,直到我查出几个项目然后添加进来,有时我的报价方法将项目放在队列的前面的后面。我已经添加了几条打印语句,以便可以看到队列中发生了什么。尝试优先级队列和我的报价方法是不把项目放在最后
import java.util.*;
public class PriorityQ {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
PriorityQueue<String> q = new PriorityQueue<String>();
String input = "";
while (!input.equals("X")) {
input = s.nextLine();
if (input.equals("O") && q.peek() == null) {
System.out.println("Buffer empty");
}
else if (!input.equals("O")) {
q.offer(input);
System.out.println(q);
}
else if (q.peek() != null && input.equals("O")) {
System.out.print("Data: ");
System.out.printf("%s ", q.peek());
q.poll();
System.out.println();
System.out.println(q);
}
}
}
}
I/O如下:
line1
[line1]
line2
[line1, line2]
line3
[line1, line2, line3]
O
Data: line1
[line2, line3]
O
Data: line2
[line3]
line1
[line1, line3]
最后一行是我的问题,提出在一号线的3号线前面。 感谢帮助:)
虽然我实际上不希望它排序,但我希望我的项目按外观顺序附加。如果我误解了我的道歉 –
如果您只是希望* all *元素按外观顺序排列,包括轮询时,请使用常规队列,例如'ArrayDeque'。 – Andreas
好吧,我明白了,所以我应该在查看和投票之前对它进行排序? –