我需要在JAVA中实现通用优先级队列。请注意,键和值都是通用的。并且所有数据结构必须由用户实现。严格禁止使用Java集合或任何其他数据结构库。我使用数组将数据存储在队列中。但是显然不可能进行通用数组声明。我不能使用数组列表,因为那样我将不得不导入库。 并且代码必须在单个文件中。该类必须实现一个接口。 界面:
public interface PQK<P extends Comparable<P>, T> {
// Return the length of the queue
int length();
// Enqueue a new element. The queue keeps the k elements with the highest priority. In case of a tie apply FIFO.
void enqueue(P pr, T e);
// Serve the element with the highest priority. In case of a tie apply FIFO.
Pair<P, T> serve();
}
我为实现给定接口的优先级队列编写的类:
public class PQKImp<P extends Comparable<P>, T> implements PQK<P, T> {
private int size;
private int capacity;
private Pair<P , T>[] heap;
public PQKImp(int k) {
heap = new Pair<P,T>[k];
this.capacity = k;
this.size = 0;
}
public int length(){
return size;
}
public void enqueue(P pr, T e){
Pair<P ,T> pair = new Pair<P,T>(pr , e);
heap[++size] = pair;
int pos = size;
while(pos!=1 && pair.first.compareTo(heap[pos/2].first)<0){
heap[pos] = heap[pos/2];
pos /= 2;
}
heap[pos] = pair;
}
public Pair<P,T> serve(){
return heap[0];
}
}
这是我得到的错误:
.\PQKImp.java:8: error: generic array creation
heap = new Pair<P,T>[k];
^
1 error
能否请您建议我一种在班级中存储数据的方法。 谢谢