我初始化一個優先級隊列,如:Java的PriorityQueue的比較 - 如何/你什麼時候進行排序?
strategy = new FuelPriority();
incoming = new PriorityQueue<Vehicle>(1, strategy);
我比較類的代碼是:
public class FuelPriority implements Comparator<Object> {
public int compare(Object o1, Object o2) {
Vehicle a1 = (Vehicle) o1;
Vehicle a2 = (Vheicle) o2;
return Integer.compare(a1.getFuelLevel(), a2.getFuelLevel());
}
}
運行仿真後,的元素是不能在所有訂購 - 他們是隨機的;我在FuelPriority
類的比較方法設置斷點,但它並沒有被調用。 我在這裏錯過了什麼嗎?
好像被訂購,但不能完全/正確,這裏是一個運行的輸出:13,16,27,21,19,39,37,50,30,34,64,46,49,72,59,58,55,61,47,73 I」已經試過在幾個不同的種子,最低燃油水平總是在隊列的前面,但我不知道爲什麼其餘對象不正確排序。 –
如果你想在排序順序檢索值,使用輪詢或偷看。具體而言,而改變的System.out.println(進入){ 的System.out.println(incoming.poll())(incoming.isEmpty()!); } –
@AlexandreSantos你可以看看我在這個問題上使用的PriorityQueue的? http://stackoverflow.com/questions/28800287/how-to-restore-the-priorityqueue-to-its-initial-state-before-the-method-call – committedandroider