2014-10-03 141 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>。如果是这样,队列将使用自然顺序。