我目前遇到以下问题:
我有一个班级" WaitingRoom"和#34;患者"。患有状态"急诊"队列中的第一个(PriorityQueue waitingRoom)(时间无关紧要),其他人按他们的约会排序。
我正在使用以下代码测试我的程序:
WaitingRoom wz = new WaitingRoom();
Calendar c = Calendar.getInstance(Locale.GERMANY);
c.set(2009, Calendar.OCTOBER, 21, 9, 35);
wz.comesIn(new Patient("Smith Jones", c.getTime(), false));
c.set(2009, Calendar.OCTOBER, 21, 9, 30);
wz.comesIn(new Patient("Mueller Johan", c.getTime(), false));
wz.comesIn(new Patient("Emergency Brooklyn", new Date(), true));
c.set(2009, Calendar.OCTOBER, 21, 8, 30);
wz.comesIn(new Patient("Richard Smith", c.getTime(), false));
c.set(2009, Calendar.OCTOBER, 21, 9, 31);
wz.comesIn(new Patient("Kimberly Adams", c.getTime(), false));
c.set(2009, Calendar.OCTOBER, 21, 9, 29);
wz.comesIn(new Patient("Random Name", c.getTime(), false));
Patient patient = wz.getNextPatient();
assertEquals("Emergency Brooklyn", patient.getName());
patient = wz.getNextPatient();
assertEquals("Richard Smith", patient.getName());
patient = wz.getNextPatient();
assertEquals("Random Name", patient.getName());
方法.getNextPatient()
返回waitingRoom.poll();
我的比较:
public int compareTo(Patient other) {
if (other.emergency) {
return 1;
} else {
if (this.emergency) {
return -1;
} else {
return this.appointment.compareTo(other.appointment);
}
}
}
代码工作正常。但我不明白排序是如何工作的。我尝试使用调试器来理解它..但我仍然没有得到它。当下一位患者进来时(它如何选择另一位患者?)和另一次使用.poll()
功能时,它会对其进行排序。
你能解释一下它是如何运作的吗?
谢谢你提前!