2014-10-03 143 views
0

u1Node是一些簡單的容器類:Java PriorityList,如何對它進行排序?

node1 = new u1Node(); 
node2 = new u1Node(); 
node3 = new u1Node(); 
node4 = new u1Node(); 

PriorityQueue<u1Node> minHeap=new PriorityQueue<u1Node>(); 

現在,我想這樣做:

minHeap.add(node2,43); 
minHeap.add(node1,22); 
minHeap.add(node4,153); 
minHeap.add(node3,2); 

爲了做到這一點:

mostImportantObject = new u1Node(); 
mostImportantObject = minHeap.poll(); 

並獲得mostImportantObject =節點3 ,因爲node3的「鍵」是2,並且它是minheap排序的最低鍵。這是不允許用java寫的,所以我應該怎麼做?

+0

'優先級隊列的元素根據其自然排序或隊列構建時提供的比較器進行排序 – njzk2 2014-10-03 15:01:13

回答

0

您需要提供相應的Comparator<u1Node>在初始化隊列:

minHeap = new PriorityQueue<u1Node>(10, new Comparator<u1Node>() { 
    @Override int compare(u1Node o1, u1Node o2) { 
    // return -1, 0, 1 depending whether o1 has priority 
    // less, equals or bigger than o2. 
    ..... // your code here 
    } 
}); 

也就是說,如果你不u1Node實施Comparable<u1Node>。如果是這樣,隊列將使用自然順序。