Java ConcurrentModification异常
我在瓦丁框架下工作。我有一个绝对布局,我在该布局中添加了一些组件,现在我迭代绝对布局以从绝对布局中获取所有组件,同时从同一绝对布局中删除一个或多个组件。但它给了我一个并发修改的例外。请帮助我如何避免异常。要求是在迭代相同布局时从绝对布局中删除组件 生成异常的代码:Java ConcurrentModification异常,java,vaadin,Java,Vaadin,我在瓦丁框架下工作。我有一个绝对布局,我在该布局中添加了一些组件,现在我迭代绝对布局以从绝对布局中获取所有组件,同时从同一绝对布局中删除一个或多个组件。但它给了我一个并发修改的例外。请帮助我如何避免异常。要求是在迭代相同布局时从绝对布局中删除组件 生成异常的代码: Iterator<?> iterate = absoluteLayout.getComponentIterator(); while (iterate.hasNext()) { Compo
Iterator<?> iterate = absoluteLayout.getComponentIterator();
while (iterate.hasNext())
{
Component c = (Component) iterate.next();
if(c instanceof Button)
{
Button button = (Button) c;
if(button.getCaption().equals(""))
{
Long id = (Long) button.getData();
if(id == subSystemId)
{
flag = true;
absoluteLayout.removeComponent(button);
absoluteLayout.removeComponent(tempLabel);
absoluteLayout.removeComponent(tempOptionGroup);
System.out.println("Waooo!! Components has been removed fro absolute layout!!");
}
}
}
else if(c instanceof Label)
{
tempLabel = (Label) c;
}
else if(c instanceof OptionGroup)
{
tempOptionGroup = (OptionGroup) c;
}
}
….您正在迭代并从同一循环内的
绝对布局中删除。
相反,尝试声明变量,如tempLabel
,tempOptionGroup
,以及按钮
在之外的同时循环
它应该可以解决您的问题使用iterator.remove()
删除元素。这将从iterator中删除元素,而不是从绝对布局的原始容器中删除。请显示示例?
java.util.ConcurrentModificationException
at java.util.LinkedHashMap$LinkedHashIterator.nextEntry(LinkedHashMap.java:394)
at java.util.LinkedHashMap$KeyIterator.next(LinkedHashMap.java:405)
at com.medmax.Dashboard.cchpi.ROSComponent.removeRosSubSystemLogic(ROSComponent.java:401)