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.