目前我正在研究医院队列系统。我在患者构造函数中有一个很长的叫做Time的时间。时间设置为system.milliseconds。下面的方法是线程的一部分。它包含和迭代器,可以获取患者的时间并将其与当前系统时间进行比较。一旦患者的时间达到2分钟,我想将已经达到两分钟的元素移动到队列的顶部。达到2分钟的每个元素都应该移到队列的顶部并进行排序。链接列表按患者的严重程度自动排序,但如果患者等待时间过长,则会将其移至前方。因此2分钟的间隔。
ListIterator<Patient> checktime = MainPatientQueue.patientslist.listIterator();
while(checktime.hasNext()){
Patient P = checktime.next();
long max = 120000;
long start = (P.getTime());
long end = System.currentTimeMillis();
//System.out.println(end-start);
if(end-start>max){
MainPatientQueue.patientslist.remove(P);
MainPatientQueue.patientslist.add(0, P);
}
}
总的来说,我想知道是否有一种方法可以在迭代器中使用来移动元素?目前,每次尝试移动元素时,我都会抛出并发修改异常。
谢谢M Shaw。我已经更新了代码,它似乎工作。但是,当它移动特定元素并返回到患者P = checktime.next();它引发了一个例外。答案 0 :(得分:0)
假设patientslist
是ArrayList或类似名称,您可以Patient P
删除checktime.remove()
,然后按patientslist.add(0, P)
将其添加到列表的开头。