我正在优化Nachos操作系统中内核线程的计时器中断函数。
简介here。
我有一门课叫警报:
public alarms(long wakeTime, KThread my_thread)
{
wakeTime=wakeTime;
thread = my_thread;
}
public long getWakeTime()
{
return wakeTime;
}
public KThread get_my_thread()
{
return thread;
}
我还有一个基于最小堆的优先级队列:
Queue<alarms> my_alarms = new PriorityQueue<alarms>();
如何使优先级队列比较Alarms类的wakeTime属性,并基于此生成最小堆。
在C++中,我将重载运算符
bool operator<(alarms a, alarms b){return a.wakeTime < b.wakeTime ? true : false;}
但我不知道如何在java中使用比较器。有人能解释一下我如何比较java中的wakeTime属性吗我需要让我的alarms类实现comparator类吗,或者我该怎么做呢?
谢谢你抽出时间!
谨致问候,
最佳答案
你就是这样做的。。
public class Alarm implements Comparable<Alarm> {
@Override
public int compareTo(Object o) {
Alarm a = (Alarm) o;
return this.wakeTime - a.wakeTime ;
}
}