使用迭代器将元素交换到链表的顶部
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)
将其添加到列表的开头。
目前我正在研究医院排队系统。我在耐心构造函数中有一个很长的时间调用。时间设置为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)
将其添加到列表的开头。