簡體   English   中英

使用迭代器將元素交換到鏈表的頂部

[英]Using an iterator to swap an element to the top of a linkedlist

目前,我正在研究醫院排隊系統。 我在患者構造函數中有一個很長的時間。 時間設置為system.ms。 下面的方法是線程的一部分。 它包含和迭代器,可獲取患者的時間並將其與當前系統時間進行比較。 一旦患者的時間達到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或類似的,你可以刪除Patient P通過checktime.remove()並通過將其添加到列表的開始patientslist.add(0, P)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM