目前我正在开发医院排队系统。我在耐心构造函数中有一个很长的称为 Time 的对象。时间设置为system.milliseconds。下面的方法是线程的一部分。它包含一个迭代器,用于获取患者的时间并将其与当前系统时间进行比较。一旦患者的时间达到 2 分钟,我想将已达到 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);
}
}
总的来说,我想知道是否有一种方法可以在迭代器中使用来移动元素?目前,每次尝试移动元素时,我都会抛出并发修改异常。
谢谢肖先生。我已经更新了代码,它似乎可以工作。但是,当它移动特定元素并返回到患者时 P = checktime.next();它抛出异常。
最佳答案
假设patientslist
是一个ArrayList或类似的,您可以通过checktime.remove()
删除Patient P
并通过patientslist.add(0, P)
将其添加到列表的开头。
关于java - 使用迭代器将元素交换到链表的顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29794980/