我需要在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();
}
类I为实现给定接口的优先级队列编写:
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
你能给我一个在类中存储数据的方法吗?谢谢
1条答案
按热度按时间u3r8eeie1#