Originariamente inviato da fcorsa
cmq il problema è proprio il remove. perchè tornando al codice originario se elimino listanew.remove(i); funziona perfettamente , se lo metto da errore al primo if ma solo nel confronto del indice i-esimo e j-esimo.
come faccio
Mi sa che non hai capito.....
se fai ArrayList<Apo> tempnew=listanew; è come se usassi listanew stessa. La lista temporanea prende il riferimento in memoria di listanew e diventano la stessa cosa.
Al massimo devi fare
codice:
ArrayList<Apo> tempnew= new ArrayList<Apo>();
tempnew.addAll(listanew);
e poi io ti ho detto di fare un altra cosa e cioè
cosi:
codice:
ArrayList<Apo> tempnew= new ArrayList<Apo>();
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.add(listanew.get(i));
}
}
}
for(int i=0;i<tempnew.size();i++){
Apo tmp = (Apo)tempnew.get(i);
listanew.remove(tmp);
}