Salve raga ho un problema con le ArrayList , vi spiego subito.

1 Creo tre ArrayList specificando il tipo tramite classi che ho creato io.

codice:
ArrayList<Apo> listaold=null;
ArrayList<Apo> listanew=null;
ArrayList<ApoSpeMod> listamod=new ArrayList<ApoSpeMod>();
la Classe Apo è questa:

codice:
public class Apo {
	   public String Specifica;
	   public String Descrizione;
	   public String Data_sped;
	   public String Gtec;
	   public String Quantita;
	   public String Ordine;
	   public String Item;
	   public String Plant;
	   public String Data;
}
la Classe ApoSpeMod è questa:

codice:
class ApoSpeMod {
	public String Specifica;
	public String Ordine;
	public String Item;
	public String Data_new;
	public String Data_old;
	public String Quantita_new;
	public String Quantita_old;
	public String Nota;
	public String Nota2;
	public String Plant;
}
Dopo inizializzo listaold e listanew con un metodo che preleva i dati da un file excel.
Faccio dei confronti tra i due, e le righe risultanti devono essere copiate in listamod.

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);
					
					}
				}
			}
Ora il problema è che se i valori relativi all'ultimo indice di listanew sono uguali a quelli di listaold , mi va in errore sul primo if , altrimenti se sono diversi mi funziona perfettamente.
Aggiungo che i controlli per tutti gli indici delle arraylist funzionano , mi va in errore solo con l'ultimo, perchè ?

qualcuno sa aiutarmi !!!!

ciao grazie