Pessoal,
Estou tentanto percorrer uma Lista em Java utilizando aquela forma clássica de percorrer a lista, um for tradicional. Segue o código :
package dao;
import java.util.List;
import model.Usuario;
public class TestaUsuarioDAO {
public static void main(String[] args) {
List<Usuario> lista = dao1.listaUsuarios();
System.out.println("Tamanho da lista : " + lista.size() );
for (int i = 0; i < lista.size(); i++ ) {
System.out.println("-------------------------------------------------");
System.out.println("Cpf : " + lista.get(i).getCpf() );
System.out.println("Nome : " + lista.get(i).getNome() );
System.out.println("Email Principal : " + lista.get(i).getEmailPrincipal() );
System.out.println("Email Alternativo : " + lista.get(i).getEmailAlternativo() );
System.out.println("Telefone : " + lista.get(i).getTelefone() );
System.out.println("Perfil : " + lista.get(i).getPerfil() );
}
}
}
[youtube] O método acima só está listando o último usuário
CPF : [telefone removido]
Nome : Samara Felipo
Email Principal : [email removido]
Email Alternativo : [email removido]
Telefone : [email removido]
Perfil : C
quando deveria estar trazendo o seguinte resultado
----------------------------------------------------
CPF : 777777777777
Nome : Max Carvalho
Email Principal : [email removido]
Email Alternativo : [email removido]
Telefone : [telefone removido]
Perfil : A
-------------------------------------------------
CPF : [telefone removido]
Nome : Carlos Henrique
Email Principal : [email removido]
Email Alternativo : [email removido]
Telefone : [email removido]
Perfil : C
-------------------------------------------------
CPF :[telefone removido]
Nome : Samara Felipo
Email Principal : [email removido]
Email Alternativo : [email removido]
Telefone : [email removido]
Perfil : C
Tamanho da lista : 3
Segue, abaixo, o código que monta a lista acima
public class UsuarioDAO {
/* atributos */
...
/* metodos get e set */
...
public List<Usuario> listaUsuarios() {
Connection conexao = null;
ConectaMySQL con1 = new ConectaMySQL();
ResultSet rs;
PreparedStatement pstmt;
Usuario u2 = new Usuario();
List<Usuario> listaUsuarios = new ArrayList<Usuario>();
String sql_cons = "select usuario_cpf, usuario_nome, usuario_emailprinc, usuario_emailalter, " +
"usuario_telefone, usuario_perfil from tb_usuario ";
conexao = con1.obtemConexao();
try {
pstmt = conexao.prepareStatement(sql_cons);
rs = pstmt.executeQuery();
while (rs.next() ) {
u2.setCpf(rs.getString(1));
u2.setNome(rs.getString(2));
u2.setEmailPrincipal(rs.getString(3));
u2.setEmailAlternativo(rs.getString(4));
u2.setTelefone(rs.getString(5));
u2.setPerfil(rs.getString(6));
listaUsuarios.add(u2);
System.out.println("-------------------------------------------------");
System.out.println("CPF : " + u2.getCpf() );
System.out.println("Nome : " + u2.getNome() );
System.out.println("Email Principal : " + u2.getEmailPrincipal() );
System.out.println("Email Alternativo : " + u2.getEmailPrincipal() );
System.out.println("Telefone : " + u2.getEmailAlternativo() );
System.out.println("Perfil : " + u2.getPerfil() );
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
con1.fechaConexao();
}
return listaUsuarios;
}
Ao excecutar o método acima, percebe-se através dos “println” que a lista é montada corretamente.
Porém, quando o método chamador(da classe TestaUsuarioDAO) tenta percorrer a lista, só exige o último elemento.
Gostaria de resolver esse meu problema acima sem usar “Iterator” e nem “enhanced-for”.
Agradece,
Max Carvalho

