所以我正在研究一个简单的Java代码
我有这个:
HashMap<ObjectKey,ArrayList<DifferentObject>> HP;
所以我按照我想要的方式使用了它,它是第一个代码:
FillHashMap(HP);
for(ObjectKey k:HP.keySet()){
ArrayList<DifferentObject> temp=HP.get(k);
for(Iterator<DifferentObject> it=temp.iterator(); it.hasNext();){
if(it.hasNext()){
DifferentObject OB=iterator.next();
if(OB.Data<OtherData && OB.Time<CurrentTime){
it.remove();
}
}
}
}
它就像一个魅力,所以我出去清理我的代码有点让它更具代表性,现在它看起来像这样:
FillHashMap(HP);
for(Object k:HP.keySet()){
for(Iterator<DifferentObject> it=HP.get(k).iterator();it.hasNext();){
DifferentObject OB=it.next(); (*)
if(Condition(OB)){
it.remove();
}
}
}
然后我在(*)行上得到ConcurrentModificationException 改变HP的另一种方法是FillHashMap,它到达for-each循环时它已经结束了,它真的是相同的代码吗?
那为什么现在给我错误?
任何远程帮助或建议都会被贬低。谢谢。
编辑:所以我回到了FillHashMap方法:
FillHashMap(HashMap HP){
Differentobject x=new DifferentObject();
for(iterator over hashmap){
ArrayList<Different Object> temp= HP.get(k);
temp.SetSomething(int a);
temp.add(x)
}
}
如果我对temp.add发表评论错误消失了,那么该程序就不会再做什么了,但至少现在我现在已经去了。
当2位代码的循环执行时,FillHashMap应该结束,但我猜不是。