Removendo todas as duplicatas de uma lista em Java

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

Read more →

Java - Combine várias coleções

Um guia rápido e prático para combinar várias coleções em Java

Read more →

Como encontrar um elemento em uma lista com Java

Veja algumas maneiras rápidas de encontrar um elemento em uma lista em Java

Read more →

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.