[RESOLVIDO] Exibir saída de uma ArrayList

Caros,

Estou tendo dúvida para “imprimir” na tela a saída de uma arraylist.

É Bem simples, inclusive meu erro pode ser algo básico, mas o que acontece é que eu consigo cadastrar os dados no arraylist, mas no momento da saída ele retorna o último cadastrado. Não consigo ter certeza se a saída tá mostrando a última posição ou se eu to sobreescrevendo os dados.

Segue abaixo o código Main.

OBS: A outra classe é um Bean apenas com o constructor e os getters/setters.

import java.util.*;
import javax.swing.*;

public class Main {

    private ArrayList<Bean> cad;
    private Bean dados;

    public Main() {
        cad = new ArrayList<Bean>();
        dados = new Bean();
        String saida = "";

        for (int x = 0; x < 2; x++) {
            dados.setNome((JOptionPane.showInputDialog("Nome: ")));
            dados.setIdade((Integer.parseInt(JOptionPane.showInputDialog("Idade: "))));
            cad.add(dados);
        }

        for (int x = 0; x < cad.size(); x++) {
            saida += "\nNome: " + dados.getNome()
                    + "\nIdade: " + dados.getIdade() + "\n ";
        }

        JOptionPane.showMessageDialog(null, saida);
    }

    public static void main(String main[]) {
        new Main();
    }
}

Coloca o dados = new Bean(); como 1ª instrução dentro do 1° for. Assim, a cada loop no for um novo objeto é criado e inserido na lista.

você está gravando várias vezes no array o mesmo elemento. Lembre-se que os objetos instanciados são lembrados na memória por pequenos códigos hexadecimais, e é isso que um array grava. Se algo for feito nesse pedaço da memória (alteração de dados), tudo que aponta pra aquele elemento será “alterado”

ArrayList<Classe> lista = new ArrayList<Classe>(); Classe objeto = new Classe(); objeto.setAtributo("valor"); lista.add(objeto); // aqui gravamos o atributo como sendo "valor" dentro do array objeto.setAtributo("novo valor"); lista.get(0).getAtributo(); // retorna "novo valor"

Primeiramente obrigado.

Fiz isso, só que mesmo assim na hora da impressão, continuou igual.

Segue um exemplo:

Inserção:

1ª.
Nome:1
Idade:1

2ª.
Nome:2
Idade:2

—Resultado—
Nome:2
Idade:2

Nome:2
Idade:2

Acredito que seja a saída o problema, pois quando você retorna um atributo apenas, você usa o .get(x), mas no caso como são características de uma única pessoa, deve ser outro modo, cujo não sei.

Obrigado

O problema e´que no for da saída você está recuperando os dados da variavel dados e não da lista cad

cad.get(x).getNome();[/code] e não [code]dados.getNome() 

Sensacional!

Claro, agora faz total lógica, eu tava querendo retornar um atributo e não uma array da lista.

Excelente, Obrigado!

Por favor, coloque um título mais descritivo no seu tópico, e não use tags para coisas inúteis, como indicar que você tem [DÚVIDA].
99% dos tópicos são de dúvida então, no fundo, uma tag desse não diz nada.

As tags são úteis para indicar que o tópicos foi [RESOLVIDO], ou mesmo para indicar a tecnologia/linguagem que você está usando como [JSP], [GROOVY], etc…
Claro, você pode colocar qualquer outra coisa, mas certifique-se de que é relevante.

Aproveite que você já resolveu sua dúvida, edite a primeira mensagem do seu post e troque o texto [DUVIDA] por [RESOLVIDO].