使用迭代器将元素交换到链表的顶部

时间:2015-04-22 10:40:15

标签: java time linked-list iterator

目前我正在研究医院队列系统。我在患者构造函数中有一个很长的叫做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();它引发了一个例外。

1 个答案:

答案 0 :(得分:0)

假设patientslist是ArrayList或类似名称,您可以Patient P删除checktime.remove(),然后按patientslist.add(0, P)将其添加到列表的开头。