【发布时间】:2017-05-06 07:26:08
【问题描述】:
我的优先级队列和比较器中的泛型类型有问题,因为我不知道如何重新输入。
当我调用 compare(IRecord t, IRecord t1)` 方法时,它需要 IRecord 对象,但我需要比较泛型类型。
类 AbstrPriorQueue 必须是泛型。
有一个与对象 IRecord 一起使用的比较器:
public class MyComparator implements Comparator<IZaznam> {
@Override
public int compare(IRecord t, IRecord t1) {
if (t.getPriority() < t1.getPriority()) {
return -1;
} else if (t.getPriority() > t1.getPriority()) {
return 1;
} else {
return 0;
}
}
}
这是我缩短的修道院队列。我在构造函数中给出比较器。 IAbstrPriorQueue 只是接口。
public class AbstrPriorQueue<T> implements IAbstrPriorQueue<T> {
// comparator
private MyComparator myComparator;
public AbstrPriorQueue(MyComparator myComparator) {
this.myComparator = myComparator;
}
@Override
public void insert(T data) {
T temp = list.getLast();
// there is a error (no suitable method found for compare(T,T))
if (myComparator.compare(data, temp) <= 0) {
// ....
}
}
}
你知道我能做什么吗?
【问题讨论】:
-
你会先设置“全英文”代码(只是因为这有助于吸引更多观众)。
标签: java generics comparator