Ho provato ad aggiungere un ArrayList temporanero modificando il codice in questo modo

codice:
ArrayList<Apo> tempnew=listanew;
			
			for(int i=0;i<listanew.size();i++){
				for(int y=0;y<listaold.size();y++){
					if(listanew.get(i).Specifica.equals(listaold.get(y).Specifica)&&listanew.get(i).Ordine.equals(listaold.get(y).Ordine)&&listanew.get(i).Item.equals(listaold.get(y).Item)){
						if(!listanew.get(i).Data_sped.equals(listaold.get(y).Data_sped)||!listanew.get(i).Quantita.equals(listaold.get(y).Quantita)){
							ApoSpeMod ogg = new ApoSpeMod();
							ogg.Specifica=listanew.get(i).Specifica;
							ogg.Ordine=listanew.get(i).Ordine;
							ogg.Item=listanew.get(i).Item;
							ogg.Data_old=listaold.get(y).Data_sped;
							ogg.Data_new=listanew.get(i).Data_sped;
							ogg.Quantita_old=listaold.get(y).Quantita;
							ogg.Quantita_new=listanew.get(i).Quantita;
							ogg.Nota=listanew.get(i).Descrizione;
							ogg.Nota2=listanew.get(i).Gtec;
							ogg.Plant=listanew.get(i).Plant;
							listamod.add(ogg);
						}
					tempnew.remove(i);
					
					}
				}
			}
			
			genera(tempnew,listamod,desfile);
ma mi da sempre lo stesso errore ! quindi il problema non e il listanew.size incasinato dal .remove(i) .

Uffaaaaaaaa

cmq grazie del suggerimento