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();
}
}
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"
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.
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].