Dúvida com Iterator

Sou iniciante no JAVA e tenho uma duvida…
Quando tento listar um ArrayList de Objetos, sempre me traz o ultimo.

import java.util.*;
import javax.swing.JLabel; // o JLabel é só para exemplificar

public class Duvida {
	private ArrayList labels;

	public Duvida() {
		labels = new ArrayList();
	}

	public void addLabel(JLabel label) {
		this.labels.add(label);
	}

	public Iterator getLabels() {
		return this.labels.iterator();	
	}

	public void mostrarLabels() {
		Iterator ite = getLabels();
		
		JLabel label = new JLabel();

		while(ite.hasNext()) {
			label = (JLabel)ite.next();	
			System.out.println(label.getText());
		}
	}

	public static void main(String[] args) {
		Duvida app = new Duvida();
		
		JLabel label = new JLabel();
		for(int i=0; i<5; i++) {
			label.setText("Label " + i);
			app.addLabel(label);
		}

		app.mostrarLabels(); // resultado: mostra os 5 labels como sendo o ultimo
	}
}

Alguém pode me ajudar?

Obrigado

Um erro de lógica:

JLabel label = new JLabel();
 		for(int i=0; i&lt5; i++) {
 			label.setText("Label " + i);
 			app.addLabel(label);
 		}

Vc sempre passará uma unica referencia do JLabel para ArrayList o correto:
Por isso ele está pegando o último prq na verdade é o primeiro.


 		for(int i=0; i&lt5; i++) 
{
 			
                         JLabel label = new JLabel();
                        label.setText("Label " + i);
 			app.addLabel(label);
 		}

Obrigado!!! :oops: erro de principiante

usa o foreach:

for (Object object : lista) {
System.out.println(object);
}