Array de objetos não salva bean corretamente. (RESOLVIDO)

Pessoal, tenho uma classe DAOVenda que tem um método listar produtos que recebe o ID da venda como argumento. Como podem existir vários produtos em uma venda, pra cada produto ele popula o bean Item_De_Venda e depois coloca todos os beans num arraylist e envia pra um método da classe Controle que depois manda pra Visão (MVC)…
O problema é que, neste select, ele me retorna dois produtos, só que os dois produtos no array estão com o conteúdo do segundo bean populado, repetido, vejam:


    public ArrayList mostrarProdutos (String id) {
        try {
            int j=0;
            ArrayList array=new ArrayList();
            con2.conecta();
            String consulta="select b.pro_nome, c.idv_qtde,c.idv_valor_unitario, c.idv_valor_total " +
                "from sinal a, produto b, item_de_venda c, venda d where " +
                "a.sin_ven_id=d.ven_id and " +
                "b.pro_id=c.produto_pro_id and " +
                "c.venda_ven_id=d.ven_id and " +
                "sin_id="+id;
            con2.executeSQL(consulta);
            while (con2.resultset.next()) {
                bc.setNome(con2.resultset.getString("pro_nome"));
                bc.setQuantidade(Double.parseDouble(con2.resultset.getString("idv_qtde")));
                bc.setValorUnitario(Double.parseDouble(con2.resultset.getString("idv_valor_unitario")));
                bc.setValorTotal(Double.parseDouble(con2.resultset.getString("idv_valor_total")));
                //somente para verificar conteúdo do bean populado
                System.out.println("Bean populado " +j);
                System.out.println(bc.getNome());
                System.out.println(bc.getQuantidade());
                System.out.println(bc.getValorTotal());
                System.out.println(bc.getValorUnitario());
                array.add(j, bc);
                System.out.println("Pegando apenas o nome do produto já adicionado no array, índice "+j);
                bc=(BeanConsultaVenda) array.get(j);
                System.out.println(bc.getNome());
                j++;
            }
            //Somente para verificar conteúdo do arraylist
            System.out.println("---------------------");
            System.out.println("Conteúdo do array índice 0 e índice 1, apenas para teste");
            bc=(BeanConsultaVenda) array.get(0);
            System.out.println(bc.getNome());
            bc=(BeanConsultaVenda) array.get(1);
            System.out.println(bc.getNome());

            return array;
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog (null,"Não foi possível mostrar os produtos "+ ex);
            ex.printStackTrace();
            return null;
        }
    }

E a surpreendente saída no console:

Veja que, depois do while, tanto o nome do objeto 1 como do 2, é o Conversão VHS/DVD e não DVD LG e Conversão VHS/DVD.

Agradeço a atenção!

en todos os passos do seu loop, vc está usando o mesmo objeto bc, só alterando os valores dele a cada iteração.

O que vc deve fazer é criar um novo objeto bc dentro do loop, setar os valores nele e depois adicionar-lo na lista

ao invés de :

Bc bc = new Bc();
while(...){
bc.setXXX();
...
array.add(bc);
}

faça

while(...){
Bc bc = new Bc();
bc.setXXX();
...
array.add(bc);
}

ai o resultado será o que vc deseja.

Mario, você está certíssimo, eu pensei que alterando o bean e salvando em um outro índice seria a mesma coisa!
Muito obrigado cara, em 5 minutos respondeu, viva o GUJ…

Abraço! 8)