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