作者olys (查無暱稱)
看板java
標題[問題] PriorityQueue排出來的結果不對
時間Thu Mar 15 04:24:21 2012
我有自訂一個Class叫作NNQE
NNQE裡有一Double變數叫作distance, 我希望NNQE能接照distance值由小到大排序
所以我先宣告了
public static class NNQECompare implements Comparator<NNQE>{
public int compare(NNQE N1, NNQE N2){
return N1.distance.compareTo(N2.distance);
}
}
接著在使用到PriorityQueue的function也宣告了
NNQECompare NNQECompare = new NNQECompare();
PriorityQueue<NNQE> Priority = new PriorityQueue<NNQE>(10, NNQECompare);
結果我把東西丟到Priority裡面
用debug模式看發現Priority裡順序是亂的,並沒有按照distance排序
想了整晚還是想不透原因 ~"~
補充
後來有試著把Comparator換了幾種邏輯上是同樣的寫法
比如
if(N1.distance>N2.distance) return 1;
if(N1.distance<N2.distance) return -1;
return 0;
結果發現結果 竟然不一樣, 但還是亂的 =口="
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.117.177.98
※ 編輯: olys 來自: 140.117.177.98 (03/15 04:33)
推 eieio:應該是別的地方有錯,補一下你怎麼放 new NNQE 和放進 queue 03/15 10:35
推 LaPass:好像要去看PriorityQueue的API,沒用過這個東西.... 03/15 12:54
推 eieio:我自己寫一個玩一玩是 ok 的 03/15 12:59