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

Using an iterator to swap an element to the top of a linkedlist

目前我正在研究医院排队系统。我在耐心构造函数中有一个很长的时间调用。时间设置为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 肖。我已经更新了代码,它似乎可以工作。但是,当它将特定元素和 returns 移动到 Patient P = checktime.next();它抛出异常。

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