Dúvida de Comparação de Listas

8 respostas
I

Boa noite Pessoal,

Tenho duas Listas com números, como posso comparar essas duas listas e adicionar em uma terceira os numeros que não são comuns.

Lista 1 (1,2,3,4,5,6)…
Lista 2 (1,2,3,4,5,)…

Lista3 seria (6)

Vlw Pessoal…

Feliz Natal a todos!

8 Respostas

UMC

se puder posta seu codigo pra ficar melhor!!
vlw
abs

davidbuzatto

O algoritimo é beeem simples. Se vc precisar programar isso, basta pensar um pouquinho.
Se vc quer algo da API que faça o serviço, o quê você quer fazer é diferença entre dois conjuntos. Para isso vc pode usar um Set.
Olhe aqui a documentação da interface Set. O método removeAll.
Outras coleções, como List, tem o método removeAll, mas conceitualmente a diferença, que é o que você quer, deve ser feita em cima de conjuntos (Sets).

[]´s

ViniGodoy
List<Integer> lista1 = Arrays.asList(new Integer[] {1,2,3,4,5,6});
List<Integer> lista2 = Arrays.asList(new Integer[] {1,2,3,4,5});

List<Integer> lista3 = new ArrayList<Integer>(lista1);
lista3.removeAll(lista2);
romarcio
ViniGodoy:
List<Integer> lista1 = Arrays.asList(new Integer[] {1,2,3,4,5,6});
List<Integer> lista2 = Arrays.asList(new Integer[] {1,2,3,4,5});

List<Integer> lista3 = new Array<Integer>(lista1);
lista3.removeAll(lista2);

Acho que deve colocar ArrayList e não apenas Array.

List<Integer> lista3 = new ArrayList<Integer>(lista1);

Mas interessante pq torna a comparação muito simples mesmo.

renamed
romarcio:
ViniGodoy:
List<Integer> lista1 = Arrays.asList(new Integer[] {1,2,3,4,5,6});
List<Integer> lista2 = Arrays.asList(new Integer[] {1,2,3,4,5});

List<Integer> lista3 = new Array<Integer>(lista1);
lista3.removeAll(lista2);

Acho que deve colocar ArrayList e não apenas Array.

List<Integer> lista3 = new ArrayList<Integer>(lista1);

Mas interessante pq torna a comparação muito simples mesmo.

Na verdade ele usou o método asList da classe Arrays! =)

ViniGodoy

E quem foi que usou apenas array?

romarcio

E quem foi que usou apenas array?

Como eu disse, achei interessante a comparação, então fui fazer um código usando seu exemplo.

Porém nessa linha:

List<Integer> lista3 = new Array<Integer>(lista1);

não consigo compilar o código, tenho a seguinte mensagem: Error:(20,35) cannot find symbol class Array

Então alterei a linha acima para:

List<Integer> lista3 = new ArrayList<Integer>(lista1);

e funcionou perfeitamente.

ViniGodoy

romarcio:
List<Integer> lista3 = new ArrayList<Integer>(lista1);
e funcionou perfeitamente.

Aah sim, agora que vi, tinha um erro lá. Era ArrayList mesmo.

Pensei que vc tava falando dos arrays primitivos.

Criado 24 de dezembro de 2009
Ultima resposta 26 de dez. de 2009
Respostas 8
Participantes 6