Removendo todas as duplicatas de uma lista em Java
Este tutorial rápido mostraráhow to clean up the duplicate elements from a List - primeiro usando Java simples, depois Guava e finalmente uma solução baseada em Java 8 Lambda.
Este artigo faz parte dethe “Java – Back to Basic” series aqui no exemplo.
1. Remover duplicatas de uma lista usando Java simples
Remover os elementos duplicados de uma lista com o Java Collections Framework padrão é feito facilmentethrough a Set:
public void
givenListContainsDuplicates_whenRemovingDuplicatesWithPlainJava_thenCorrect() {
List listWithDuplicates = Lists.newArrayList(0, 1, 2, 3, 0, 0);
List listWithoutDuplicates = new ArrayList<>(
new HashSet<>(listWithDuplicates));
assertThat(listWithoutDuplicates, hasSize(4));
}
Como você pode ver, a lista original permanece inalterada.
Leitura adicional:
Perguntas da entrevista sobre coleções Java
Um conjunto de perguntas práticas sobre entrevistas em Java relacionadas a coleções
Java - Combine várias coleções
Um guia rápido e prático para combinar várias coleções em Java
Como encontrar um elemento em uma lista com Java
Veja algumas maneiras rápidas de encontrar um elemento em uma lista em Java
2. Remover duplicatas de uma lista usando Guava
O mesmo pode ser feito usando o Goiaba:
public void
givenListContainsDuplicates_whenRemovingDuplicatesWithGuava_thenCorrect() {
List listWithDuplicates = Lists.newArrayList(0, 1, 2, 3, 0, 0);
List listWithoutDuplicates
= Lists.newArrayList(Sets.newHashSet(listWithDuplicates));
assertThat(listWithoutDuplicates, hasSize(4));
}
E, novamente, a lista original permanece inalterada.
3. Remover duplicatas de uma lista usando Java 8 Lambdas
Finalmente - vamos ver uma nova solução, usando Lambdas em Java 8; vamos parause the distinct() method from the Stream API, que retorna um fluxo que consiste em elementos distintos com base no resultado retornado pelo métodoequals():
public void
givenListContainsDuplicates_whenRemovingDuplicatesWithJava8_thenCorrect() {
List listWithDuplicates = Lists.newArrayList(1, 1, 2, 2, 3, 3);
List listWithoutDuplicates = listWithDuplicates.stream()
.distinct()
.collect(Collectors.toList());
}
E aí está: três maneiras rápidas de limpar todos os itens duplicados de uma lista.
4. Conclusão
Este artigo demonstra como é fácil remover duplicatas de uma lista usando Java simples, Google Guava e Java 8.
A implementação de todos esses exemplos e snippets pode ser encontrada emGitHub project. Este é um projeto baseado em Maven, portanto deve ser fácil importar e executar.