Comparar duas listas de objetos

2 respostas
S

Bom pessoal eu tenho duas listas de funcionarios, eu queria comparar as duas listas pelo nome dos funcionarios e por exemplo, se um Funcionario da lista 1 não estiver presente na lista 2, adicionar a ela…ou seja uma espécie de união de listas, fazer isso com lista de Strings é tranquilo, mas estou em duvida em fazer isso com objetos!

Obrigado desde já!

2 Respostas

E

Collection.addAll
Ao definir a classe de seus objetos, você deve definir corretamente o método equals, e também o método hashcode (se for usar um HashSet) ou então o método compareTo (se for usar um TreeSet).

Você pode definir a lista de funcionários como um ArrayList, mas se você sabe que não há funcionários repetidos, é melhor usar um TreeSet ou um HashSet.

S

Edson Watanabe:
Collection.addAll
Ao definir a classe de seus objetos, você deve definir corretamente o método equals, e também o método hashcode (se for usar um HashSet) ou então o método compareTo (se for usar um TreeSet).

Você pode definir a lista de funcionários como um ArrayList, mas se você sabe que não há funcionários repetidos, é melhor usar um TreeSet ou um HashSet.

Eu sobreescrevi o equals com o seguinte código:

public boolean equals(Funcionario f) { if(this.nome.equals(f.getNome())) return true; return false; }

E estou fazendo a comparação das listas assim:

public static PlanilhaFuncionarios compararTabelas(PlanilhaFuncionarios planilhaBase, PlanilhaFuncionarios planilhaComparativa) { boolean isIgual = false; for (Funcionario func : planilhaComparativa.funcionarios) { if(!(planilhaBase.funcionarios.contains(func))) planilhaBase.funcionarios.add(func); } return planilhaBase; }

Só que simplesmente a planilha ta retornando uma união das duas, com praticamente todos os funcionarios repetidos(já que as duas planilhas possuem vários funcionarios iguais)
O que estou fazendo de errado?

Criado 28 de agosto de 2009
Ultima resposta 28 de ago. de 2009
Respostas 2
Participantes 2