ArrayList comparar se existe valor duplicado

5 respostas
F

Gente, to com uma duvida besta rs, eu tenho um arraylist que eu faço um for e alimento ele, sendo assim quero comparar se existe valor igual dentro dele, como faço para fazer um for que compare isso. segue meu codigo

ListaRotaTModel  tableModel = (ListaRotaTModel ) jTable1.getModel();
        int total = tableModel.getRowCount();
        lista_salvar_seq = new ArrayList();
        
        for (int x=0; x<total; x++) {
            Rota rota = (Rota) tableModel.getRota(x); //salvo o que possui na linha 0
            lista_salvar_seq.add(rota); // adiciono o que encontrei em uma lista
        }

5 Respostas

Hebert_Coelho

Você pode usar um Set<A_CLASSE> valores = new HashSet<A_CLASSE>(); que o set já elimina quem esta repetido. [=

tgcmv

Sbrescreva o método equals (e hash) e compare suas rotas.

rota_a
rota_b
rota_c

A desvantagem é que irá comparar uma rota com todas as outras.

Se a lista não puder ter rotas dupllicadas use um ‘Set’
Set: Contém apenas os métodos herdados de Collection e adiciona a restrição de que elementos duplicados não são permitidos.
Exemplo:java.util.Set

F

Vocês tem algum exemplo eu nao sei muito bem usar isso, um exemplo que poderia colocar em cima desse que eu fiz?

edu_fernandes

Primeiro isso funciona, mas você vai perder a ordenação do ArrayList, pois por natureza o HashSet é uma coleção, portanto não aceita valores duplicados. Além de em uma iteração de valores o Hash pode acabar sendo mais lento, isso por vários motivos. [fonte: http://bit.ly/YxVidl]

Segundo ponto é que ele quer comparar se existe, não ficou claro se ele quer remover os valores do ArrayList.

Para efetuar uma comparação dos valores duplicados, pode criar um método semelhante a este:

Espero ter ajudado.

ViniGodoy

Para não perder a ordenação, é só usar um LinkedHashSet no lugar do HashSet.
Para ganhar a ordem alfabética automaticamente, é só usar um TreeSet no lugar do HashSet.

Mas ainda acho que a melhor solução é usar um Set.

Criado 4 de abril de 2013
Ultima resposta 4 de abr. de 2013
Respostas 5
Participantes 5