我创建了一个arrayList处理来显示治疗室的5个实例,我还为治疗室创建了一个linkedList inTreatment,将5个患者对象从队列中传递出来,但是当我将多个对象传递给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");
}
}
}
解决方法:
问题可能来自这里:
queue.remove(i);
你要删除索引i处的元素,但是我在房间的范围内,并且与队列无关,是吗?
您可能希望删除第一个元素.
旁注:应该有一个poll()方法,允许你在一次调用中偷看并删除队列的第一个元素,但是我不知道你在这里使用什么类型的队列,它看起来不像像java.util.Queue.
标签:java,arrays,linked-list
来源: https://codeday.me/bug/20190708/1401040.html