看板 java 關於我們 聯絡資訊
我有自訂一個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