Comparação de igualdade em list não funciona

4 respostas
C

Olá, bom dia. Busco valores de uma tabela (conforme abaixo) mas mesmo com os campos tendo valores iguais, a comparação de igualdade não funciona, ou seja, o comando println não é executado. O que está errado?

List lr1 = new ArrayList();
                              
               while (rs.next()) {
            	   
                  s1 = Double.parseDouble(rs.getString("lr_placa"));
                  lr1.add(s1);
               }

               stmt.close();
               con.close();
               for(int i = 0; i < lr1.size(); i++) {
            	   if (i < lr1.size() - 1){
            		   if (lr1.get(i) == lr1.get(i+1)){
            			   System.out.println(lr1.get(i));
            			   System.out.println(lr1.get(i + 1));
            		   }
            	   }
               }

Grato, Carlos.

4 Respostas

G

Amigo você esta querendo comparam uma Lista de Double?
Se for isso use:

//Lista somente para Double
List<Double> lista = new ArrayList<Double>();
// e ao inves de usar o "==" use o "equals" para comparar
lista.get(posicao).equals(lista.get(outraPosicao))  
}
ViniGodoy
  1. Se seu campo no banco é um double, use rs.getDouble no lugar de rs.getString e evite a conversão;
  2. Retire o if (lr1.get(i) == lr1.get(i+1)) e faça seu for ir até lr1.size()-1
  3. Stements e conexões devem ser fechadas dentro de um bloco finally;
  4. A lista deve conter o tipo do dado que está dentro dela. No caso, List<Double>
  5. Se a idéia dessas comparações é evitar itens duplicados, use um Set no lugar de um List.
C

Ok, muito obrigado pelas dicas…

C

Ok, muito obrigado pelas dicas…

Criado 26 de maio de 2010
Ultima resposta 26 de mai. de 2010
Respostas 4
Participantes 3