我的程序正常工作,直到我查出幾個項目然後添加進來,有時我的報價方法將項目放在隊列的前面的後面。我已經添加了幾條打印語句,以便可以看到隊列中發生了什麼。嘗試優先級隊列和我的報價方法是不把項目放在最後
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
好吧,我明白了,所以我應該在查看和投票之前對它進行排序? –