我创建了一个arrayList treat
来显示治疗室的5个实例,我还为治疗室创建了一个linkedList inTreatment
,将5个患者对象传递到queue
,但是当我将多个对象传递给linkedList时,它们会不断地替换添加的第一个元素,而不是移动到下一个可用元素。我认为问题出在inTreatment.add
行,但我不确定如何引用下一个可用的索引。所有建议都非常受欢迎。
下面是我创建数组并添加到inTreatment
linkedList。
创建治疗室阵列
public static void createTreatmentRooms() {
for (int i = 0; i < treat.length; i++) {
treat[i] = new TreatmentRoom();
treat[i].setAvailable(true);
}
}
添加到治疗室方法
for (int i = 0; i < TreatmentRoom.treat.length; i++) {
if ((TreatmentRoom.treat[i].isAvailable())
&& (Queue.queue.size() != 0)
&& (Queue.queue.getFirst().getTriage() != Status.NOT_ASSESSED)) {
// add patient to inTreatment list for future sorting...
inTreatment.add(queue.getFirst());
System.out.println("taken to treatment queue");
// remove patient from front of queue
for (Patient p : queue) {
System.out.println(p.getFirstName());
}
queue.poll();
System.out.println("second queue");
for (Patient p : queue) {
System.out.println(p.getFirstName());
}
System.out.println("removed from queue");
// if free, add patient to treatment room
TreatmentRoom.treat[i].setPatient(inTreatment.getFirst());
System.out.println("sent to treatment room"
+ TreatmentRoom.treat[i]);
// System.out.println("patient added" +
// queue.get(i).getFirstName());
// set treatment room to unavailable
TreatmentRoom.treat[i].setAvailable(false);
System.out.println("treatment room busy");
} else {
System.out.println("Treatment room is not available");
}
}
}
答案 0 :(得分:1)
问题可能来自这里:
queue.remove(i);
您要删除索引i
处的元素,但i
位于会议室的范围内,并且与队列无关,是吗?
您可能希望删除第一个元素。
旁注:应该有一个 poll()
方法,允许您在一个调用中窥视并删除队列的第一个元素,但是我&#39 ; m不知道你在这里使用什么类型的队列,它看起来不像 java.util.Queue
。