Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java优先级列表,如何排序?_Java - Fatal编程技术网

Java优先级列表,如何排序?

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

u1Node是一些简单的容器类:

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
  }
});