gag*_*nbm 1 java iterator linked-list
我有对象的LinkedList和迭代器.我知道当您尝试在运行迭代器时修改列表时会抛出此ConcurrentModificationException.但在我的情况下,我不明白这种修改在哪里.
迭代器看起来像这样:
private static void insertTasks(Task t) {
if(eventQueue.size() == 0) {
eventQueue.addFirst(tsk);
return;
}
int pos = 0;
while (itr.hasNext()){
//The line below throws the exception
if (t.getArrivalTime() <= itr.next().getArrivalTime() )
{
break;
}
pos++;
}
}
Run Code Online (Sandbox Code Playgroud)
我insertTasks从另一种方法调用此方法,如下所示:
tsk = null;
tsk = new Task(1,"P1",1,4.0f,1.5f,0.0f,8.0f);
insertTasks(tsk);
tsk = null;
tsk = new Task(0,"P0",2,5.0f,2.5f,1.0f,10.0f);
insertTasks(tsk);
Run Code Online (Sandbox Code Playgroud)
将getArrivalTime在Task对象的样子:
public float getArrivalTime() { return arrivalTime; }
Run Code Online (Sandbox Code Playgroud)
我的问题是,我在哪里做这个修改?while我运行它的循环iterator没有做任何修改.可以 ?
我错过了什么吗?
我认为问题在于itr你的类中是一个静态字段,而这正在创建问题,因为你eventQueue在第二次调用中添加了一个元素insertTasks().
避免使用静态字段...编程让自己害怕并尽可能地避免使用它们.他们邪恶,OO不友好.
| 归档时间: |
|
| 查看次数: |
307 次 |
| 最近记录: |