[Resolvido] - Comparação em 2 arraylist gerandou um terceiro
6 respostas
LucianoTulio
Acredito minha logica não estaja errada, tenho 2 arraylist, de tipos diferentes mais com uma variavel em comum neles, a variavel codigocliente.
preciso fazer um comparação nesses codigocliente , se existir o msm valor nas duas adicionar em uma nova arraylist o valor da da variavel comum codigocliente, ele ate esta fazendo isso
mas ele nao percorre toda a lista ele cria so o começo dela.
segue o codigo
publicvoidcompararClientes(List<Clifiscojuridico>l1,List<Desativar>l2){List<Clifiscojuridico>lista=l1;List<Desativar>lista2=l2;List<Integer>codigos=newArrayList<Integer>();for(Clifiscojuridicoc:lista){// cada obj da lista capturo o codigo do clienteIntegeri=c.getCodcliente();for(Desativard:lista2){//para cada obj da lista eu percorro a lista2 comparando Integerj=d.getCodcliente();if(i==j){// aqui verifico a igualdade entre eles, se igual adiciono o numero do codigocliente na arraylist do tipo integer codigos.add(i);}}}
Minha primeira lista tem 5 mil registro e a segunda 2,5mil preciso preencher a terceira e ta preenchendo apenas 39 deles, e fiz teste direto no banco e sao 2,3mil registro pra essa 3 lista,
Você pega esses valores do banco? Se sim, faça uma consulta com inner join.
ViniGodoy
Por favor, não peça urgência no fórum.
Alguns comentários:
//l1 e l2 são péssimos nomes//E você não está retornando resultado.publicvoidcompararClientes(List<Clifiscojuridico>l1,List<Desativar>l2){List<Clifiscojuridico>lista=l1;//Linha inútilList<Desativar>lista2=l2;//Linha inútilList<Integer>codigos=newArrayList<Integer>();for(Clifiscojuridicoc:lista){Integeri=c.getCodcliente();for(Desativard:lista2){//Extremamente ineficienteIntegerj=d.getCodcliente();if(i==j){codigos.add(i);}}}
Malz aee ViniGodoy coloquei urgente que 3 perg q fiz ao forum nenhuma foi respondida
sei que estou utilizando nomes simples e não sugestivos, mas como estou apenas
realizando a logica para depois melhorar o codigo postei com esses nomes.
mas preciso fazer retornar uma list, nao entendi muito a classe Set
e vi que nao posso fazer um cast nele.
LucianoTulio
se eu for realizar um sql desse tipo
alguem poderia me ajudar com criteria
ele realiza o select na tabelaclifiscojuridico que sao diferentes de simple e faz o inner join na tabela desativar para pegar somente
dos tipos coddes igual a 0 ou 1
ViniGodoy
Se você quer retornar um list, troque o tipo de retorno para List e troque a linha 9 por:
A diferença será apenas que o set não retornará itens duplicados e também retornaria os ids ordenados.
LucianoTulio
ViniGodoy muito obrigado, eu não sabia sobre o Set mas pesquisei e encontrei uma vídeo aula explicando
tudo sobre ela, a diferença entre List e Set, e o TreeSet organiza em ordem
crescente, tbm me ajudou bastante.