Non ho guardato tutto, mi è caduto subito l'occhio su questa riga:
s.add(new Prodotto(iter.next().getPeso(),iter.next().getPrez zoEtto(),
iter.next().getScontoPercentuale()));
Non penso faccia quello che pensi faccia...
Ogni chiamata a next() porta avanti l'iteratore, in pratica stai creando un Prodotto usando valori di tre prodotti diversi.
Ah, i campi delle classi vanno scritti con l'iniziale minuscola: prezzoEtto, non PrezzoEtto, ecc