Secondo me l'errore è nella rimozione dalla lista. Non puoi rimuovere oggetti dalla lista mentre la cicli, il istanew.size() cambia in continuazione e si incasina.codice: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); } listanew.remove(i); } } }
Se usavi i generics ti dava immediatamente errore.
Prova a creare una lista di appoggio dove ci metti gli oggetti da rimuovere e poi dopo che hai fatto le operazioni.
Cicli la lista da rimuovere e togli l'oggetto dalla listanew, il riferimento all'oggetto è lo stesso quindi puoi usare direttamente .remove(oggetto).