1
我想創建節點的優先級隊列,其中節點的優先級是它們的頻率。但是輸出不包含正確位置的第一個元素,所有其他元素都位於正確的位置。Java問題中的優先級隊列排序
import java.util.*;
class node implements Comparable<node>{
char key;
int freq;
node(){}
node(char k,int f){
key=k;
freq=f;
}
public int compareTo(node n){
if(freq>n.freq)return 1;
return 0;
}
}
public class test{
public static void main(String[] args){
node x=new node('x',4);
node a=new node('a',2);
node b=new node('b',1);
node c=new node('c',7);
PriorityQueue<node> q = new PriorityQueue<node>();
q.offer(a);
q.offer(b);
q.offer(c);
q.offer(x);
while(!q.isEmpty()){
node d=q.poll();
System.out.println(d.key+" "+d.freq);
}
}
}
輸出:
a 2
b 1
x 4
c 7
不應該的順序進行B,A,X,C 感謝。
那麼什麼是返回0的需要? – Jignesh
當對象被認爲相等時,即當頻率相同時,返回0。 –