[問題] PriorityQueue排出來的結果不對

看板java作者 (查無暱稱)時間13年前 (2012/03/15 04:24), 編輯推噓3(300)
留言3則, 2人參與, 最新討論串1/3 (看更多)
我有自訂一個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
應該是別的地方有錯,補一下你怎麼放 new NNQE 和放進 queue
03/15 10:35, 1F

03/15 12:54, , 2F
好像要去看PriorityQueue的API,沒用過這個東西....
03/15 12:54, 2F

03/15 12:59, , 3F
我自己寫一個玩一玩是 ok 的
03/15 12:59, 3F
文章代碼(AID): #1FOFvuUS (java)
文章代碼(AID): #1FOFvuUS (java)