作者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)
1F:推 eieio:应该是别的地方有错,补一下你怎麽放 new NNQE 和放进 queue 03/15 10:35
2F:推 LaPass:好像要去看PriorityQueue的API,没用过这个东西.... 03/15 12:54
3F:推 eieio:我自己写一个玩一玩是 ok 的 03/15 12:59