[問題] PriorityQueue排出來的結果不對
我有自訂一個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)
推
03/15 10:35, , 1F
03/15 10:35, 1F
推
03/15 12:54, , 2F
03/15 12:54, 2F
推
03/15 12:59, , 3F
03/15 12:59, 3F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 3 篇):