So i was working on a simple Java code
i have this:
HashMap<ObjectKey,ArrayList<DifferentObject>> HP;
So i used it how i wanted and it worked heres the first code:
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();
            }
        }
    }
}
And it works like a charm, so i went out to clean my code a bit make it more presentable and now it looks like this:
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();
      }
}      
}
And then i get the ConcurrentModificationException on the line with the (*) The other method that changes HP is FillHashMap and its already over by the time it reaches the for-each cycle, it really is the same code right?
Then why is giving me the error now?
Any remote help or suggestion would be apreciated. Thank you.
EDIT: So i went back to FillHashMap method:
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)
   }
}
if i comment the temp.add the error is gone, offcourse the program is not doing what is suppoused to do anymore, but at least now i now where it is.
By the time the loop of the 2 bit of code executes, FillHashMap should be over, but i guess its not.
 
    