通用优先级队列java实现
我需要在JAVA中实现一个通用优先级队列。请注意,键和值都是泛型的。所有的数据结构都必须由用户实现。严禁使用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
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