将对象传递给链接列表

时间:2015-04-28 18:55:01

标签: java arrays linked-list

我创建了一个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");

        }

    }
}

1 个答案:

答案 0 :(得分:1)

问题可能来自这里:

queue.remove(i);

您要删除索引i处的元素,但i位于会议室的范围内,并且与队列无关,是吗?

您可能希望删除第一个元素。

旁注:应该有一个 poll() 方法,允许您在一个调用中窥视并删除队列的第一个元素,但是我&#39 ; m不知道你在这里使用什么类型的队列,它看起来不像 java.util.Queue