通用优先级队列java实现

通用优先级队列java实现,java,generics,data-structures,priority-queue,Java,Generics,Data Structures,Priority Queue,我需要在JAVA中实现一个通用优先级队列。请注意,键和值都是泛型的。所有的数据结构都必须由用户实现。严禁使用Java集合或任何其他数据结构库。我使用数组在队列中存储数据。但显然,通用数组声明是不可能的。我不能使用数组列表,因为这样我将不得不导入库。 代码必须在单个文件中。该类必须实现一个接口。 接口: public interface PQK<P extends Comparable<P>, T> { // Return the length of th

我需要在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();
}
公共接口PQK{
//返回队列的长度
int length();
//将一个新元素排入队列。队列保持k个元素具有最高优先级。如果出现平局,则应用FIFO。
无效排队(P-pr,T-e);
//以最高优先级服务元素。如果出现平局,则应用FIFO。
配对发球();
}
类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实现了PQK{
私有整数大小;
私人int能力;
私有对[]堆;
公共PQKImp(int k){
堆=新对[k];
这是容量=k;
此值为0.size=0;
}
公共整数长度(){
返回大小;
}
公共无效排队(P-pr,T-e){
配对Pair=新配对(pr,e);
堆[++大小]=对;
int pos=大小;

while(pos!=1&&pair.first.compareTo(heap[pos/2].first)而不是
new pair[k];
,使用
new pair[k];
wow刚刚奏效。你救了我的命谢谢你而不是
new pair[k];
,使用
new pair[k];
刚刚奏效的哇。你救了我的命谢谢你
.\PQKImp.java:8: error: generic array creation
                heap = new Pair<P,T>[k];
                       ^
1 error