List recebe apenas último elemento inserido

olá pessoal.
Eu estou refazendo uma aplicação que exibe dados do banco em uma JTable.

mas dessa vez, ao adicionar os objetos do Tipo ‘Usuario’ em uma List, essa List fica com os objetos ‘Usuario’ todos iguais
ao último deles inserido, ele se repete.
Ex:
na JTable aparecia:
1 Joao
2 Jose
3 Ana
4 Maria

ao invés disso aparece:
4 Maria
4 Maria
4 Maria
4 Maria

aqui abaixo o trecho onde eu adiciono os dados do banco na List:

        PreparedStatement st = conn.prepareStatement("select * from usuario");
        ResultSet rs = st.executeQuery();        
        List<Usuario> userlist = new ArrayList<Usuario>();
        while (rs.next()){
            Usuario user = new Usuario();
            user.setId(rs.getInt("USU_ID"));
            user.setNome(rs.getString("USU_NOME"));
            user.setTitulo(rs.getString("USU_TITULO"));
            userlist.add(user);
        };
        return userlist;

Sendo que se eu pegar os itens dessa List com o código abaixo, os objetos nela possuem os atributos iguais:

        Usuario user0 = userlist.get(0);
        Usuario user1 = userlist.get(1);
        
        System.out.println("user0= " + user0.getNome());
        System.out.println("user1= " + user1.getNome());

Isso Imprimi:
user0= 4 Maria
user1= 4 Maria

ao invés de
user0= 1 Joao
user1= 2 Jose

Alguém já teve o mesmo problema? eu sei que muitos usam esse código que eu uso.
o meu ‘Usuario’ é uma classe, e eu uso um ‘usuarioTableModel’ criado por mim, mas creio
que o problema esteja no List.

Posta a sua classe usuarioTableModel por que a principio o jeito que vc esta pegando os dados do banco dados via jdbc esta verto, talvez seja a clase usuarioTableModel

a meu ver está correto, parece algum bug…faça outros testes, tipow imprimir o user cadstrado dps de inserido…

estou fazendo esses testes.
Vcs sabem se isso abaixo deveria acontecer? :

[code]
Usuario user0 = new Usuario();
user0.setNome(“User0”);
userlist.add(user0);
Usuario user1 = new Usuario();
user1.setNome(“User1”);
userlist.add(user1);

    Usuario userteste0 = userlist.get(0);
    Usuario userteste1 = userlist.get(1);
    
    System.out.println("user0= " + userteste0.getNome());
    System.out.println("user1= " + userteste1.getNome());

[/code]O código acima imprime:
user0= User1 <<<<
user1= User1

há algo que eu não estou conseguindo enchergar. se alguem consiguir ver, agradeço.

Não sei o que esta havendo mas, a sua lista é como se vc tivesse inserrido duas vezes o mesmo kra mas naum foi isso que vc fez, gerealmente essas loguragens acontece quando usa uma unica variavel para atribuir coisas em uma lista, e so ua sinal de igual isso faz com o que seja copiado para a variavel nova so a posicao de memoria, ai da essas loguragens mas sinceramente no seu caso naum sei o que pode ser.

[quote=Eudes.eds]estou fazendo esses testes.
Vcs sabem se isso abaixo deveria acontecer? :

[code]
Usuario user0 = new Usuario();
user0.setNome(“User0”);
userlist.add(user0);
Usuario user1 = new Usuario();
user1.setNome(“User1”);
userlist.add(user1);

    Usuario userteste0 = userlist.get(0);
    Usuario userteste1 = userlist.get(1);
    
    System.out.println("user0= " + userteste0.getNome());
    System.out.println("user1= " + userteste1.getNome());

[/code]O código acima imprime:
user0= User1 <<<<
user1= User1

há algo que eu não estou conseguindo enchergar. se alguem consiguir ver, agradeço.

[/quote]

testei esse código e aqui funcionou normal.
user0= User0
user1= User1

Verifique como os dados estão gravados no BD (se ainda não fez isso).

Não seria melhor listar pelo ID?

fala pessoal

então, no trrecho que postei por último
não faz diferença mostrar Id ou o Nome do Objeto, pq eu não trouxe eles do Banco,
eu setei os Obj manualmente na List.

@kapa01
interessante a List estar certa com vc,
o código que vc executou não traz do Banco,
vc está colocando manualmente os Nomes “User0” e “User1” na List,
mas quando eu dou um get() na List ela só tem valores iguais ao “User1”.

será que é algum Alien possuindo o PC?
vlw pela atençao pessoal.

tenta mudar o seu codigo pra isso:

PreparedStatement st = conn.prepareStatement("select * from usuario");  
ResultSet rs = st.executeQuery();          
List&lt;Usuario&gt; userlist = new ArrayList&lt;Usuario&gt;();  
Usuario user;
while (rs.next()){  
    user = new Usuario();  
    user.setId(rs.getInt("USU_ID"));  
    user.setNome(rs.getString("USU_NOME"));  
    user.setTitulo(rs.getString("USU_TITULO"));  
    userlist.add(user);  
};  
return userlist;

acho que vai funcionar.