Pessoal, criei um classe chamada MinhaClasse que tem os métodos Get e Set para id, nome e idade.
Em um servlet eu fiz uma instancia desta classe e criei um ArrayList assim:
MinhaClasse teste = new MinhaClasse();
ArrayList<MinhaClasse> lista = new ArrayList<MinhaClasse>();
Depois em um laço for eu foi alimentando desta forma
O problema é que somente é impresso o último valor repetidamente, fica dessa forma:
ID: 10 - Nome: João - Idade: 45
ID: 10 - Nome: João - Idade: 45
ID: 10 - Nome: João - Idade: 45
ID: 10 - Nome: João - Idade: 45
ID: 10 - Nome: João - Idade: 45
ID: 10 - Nome: João - Idade: 45
ID: 10 - Nome: João - Idade: 45
Fiz um teste no for, que lê um arquivo texto e o valor carregado nos métodos Sets está correto, parece que na hora de assimilar no ArrayList é que bagunça tudo.
Alguém pode dar uma ajuda sobre onde está o erro?
Coloca seu “for” completo ai… eu arriscaria dizer que você ta fazendo algo assim:
MinhaClasse teste = new MinhaClasse();
ArrayList<MinhaClasse> lista = new ArrayList<MinhaClasse>();
for (....) {
teste.setId(idBase);
teste.setNome(nomeBase);
teste.setIdade(idadeBase);
lista.add(teste);
}
dessa forma você ta sempre usando a mesma referência de MinhaClasse, e aí essa referencia sempre fica com o ultimo valor… pra corrigir cria uma instancia nova a cada iteração do “for”, tipo assim:
MinhaClasse teste = new MinhaClasse();
ArrayList<MinhaClasse> lista = new ArrayList<MinhaClasse>();
for (....) {
teste = new MinhaClasse();
teste.setId(idBase);
teste.setNome(nomeBase);
teste.setIdade(idadeBase);
lista.add(teste);
}
[quote=Rendrys]Coloca seu “for” completo ai… eu arriscaria dizer que você ta fazendo algo assim:
MinhaClasse teste = new MinhaClasse();
ArrayList<MinhaClasse> lista = new ArrayList<MinhaClasse>();
for (....) {
teste.setId(idBase);
teste.setNome(nomeBase);
teste.setIdade(idadeBase);
lista.add(teste);
}
dessa forma você ta sempre usando a mesma referência de MinhaClasse, e aí essa referencia sempre fica com o ultimo valor… pra corrigir cria uma instancia nova a cada iteração do “for”, tipo assim:
MinhaClasse teste = new MinhaClasse();
ArrayList<MinhaClasse> lista = new ArrayList<MinhaClasse>();
for (....) {
teste = new MinhaClasse();
teste.setId(idBase);
teste.setNome(nomeBase);
teste.setIdade(idadeBase);
lista.add(teste);
}
[/quote]
Cara, segui seu raciocino, mas agora no meu JSP o valor não chega, fica tudo em branco, assim:
ID: - Nome: - Idade:
ID: - Nome: - Idade:
ID: - Nome: - Idade:
ID: - Nome: - Idade:
seu for tem que estar assim, provavelmente utilizando um ResultSet de uma determinada consulta sql ao banco:
MinhaClasse teste = new MinhaClasse();
ArrayList<MinhaClasse> lista = new ArrayList<MinhaClasse>();
while(rs.next())
{
teste = new MinhaClasse();
teste.setId(idBase);
teste.setNome(nomeBase);
teste.setIdade(idadeBase);
lista.add(teste);
}