Java优先级列表,如何排序?
u1Node是一些简单的容器类:Java优先级列表,如何排序?,java,Java,u1Node是一些简单的容器类: node1 = new u1Node(); node2 = new u1Node(); node3 = new u1Node(); node4 = new u1Node(); PriorityQueue<u1Node> minHeap=new PriorityQueue<u1Node>(); 为此,请执行以下操作: mostImportantObject = new u1Node(); mostImportantObject
node1 = new u1Node();
node2 = new u1Node();
node3 = new u1Node();
node4 = new u1Node();
PriorityQueue<u1Node> minHeap=new PriorityQueue<u1Node>();
为此,请执行以下操作:
mostImportantObject = new u1Node();
mostImportantObject = minHeap.poll();
并获取mostImportantObject=node3,因为node3的“键”是2,它是最小堆排序所依据的最低键。java中不允许以这种方式编写,因此我应该如何编写?初始化队列时,您需要提供适当的
比较器:
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
}
});
minHeap=newpriorityqueue(10,newcomparator(){
@覆盖整数比较(u1Node o1,u1Node o2){
//根据o1是否具有优先级返回-1、0、1
//小于、等于或大于o2。
…//您的代码在这里
}
});
也就是说,如果您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
}
});