PriorityQueue包括.poll()和比较解释? (JAVA)

时间:2014-11-23 15:34:02

标签: java priority-queue

我目前遇到以下问题:

我有一个班级" 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()功能时,它会对其进行排序。

你能解释一下它是如何运作的吗?

谢谢你提前!

0 个答案:

没有答案