我有一个自定义的“堆”类:
public class Heap<T extends Comparable<T>>
{
ArrayList<T> heapList;
public Heap()
{
heapList = new ArrayList<T>();
}
和自定义“Process”类:
public class Process {
private int processID, timeUnitsRequired, priority, timeOfArrival;
public Process(int processID, int timeUnitsRequired, int priority, int timeOfArrival) {
this.processID = processID;
this.timeUnitsRequired = timeUnitsRequired;
this.priority = priority;
this.timeOfArrival = timeOfArrival;
}
但是,如果我尝试创建一个新的进程堆,例如Heap<Process> processHeap = new Heap<Process>();
,我会收到以下错误:
绑定不匹配:类型Process不是有界参数&gt;的有效替代; Heap的类型
这是为什么?我似乎无法弄明白。
答案 0 :(得分:2)
流程没有实现Comparable
答案 1 :(得分:1)
流程对象需要实现Comparable
接口。
按优先级比较的示例实施
public class Process implements Comparable<Process>{
@Override
public int compareTo(Object o) {
Process p2 = (Process) o;
if(this.priority > p2.priority){
return 1;
}else if(this.priority < p2.priority){
return -1;
}
return 0;
}
}