Convertendo entre uma lista e um conjunto em Java

Convertendo entre uma lista e um conjunto em Java

1. Visão geral

Neste breve artigo, daremos uma olhada emthe conversion between a List and a Set - começando com Plain Java, usando Guava e finalmente usando a bibliotecaApache Commons Collections.

Este artigo faz parte dethe “Java – Back to Basic” series aqui no exemplo.

Leitura adicional:

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

Baralhar coleções em Java

Aprenda a embaralhar várias coleções em Java.

Read more

Verifique se duas listas são iguais em Java

Um pequeno artigo focado no problema comum de testar se duas instâncias da Lista contêm os mesmos elementos exatamente na mesma ordem.

Read more

2. ConvertaList emSet

2.1. Com Plain Java

Vamos começar convertendofrom a List to a Set using Java:

public void givenUsingCoreJava_whenListConvertedToSet_thenCorrect() {
    List sourceList = Arrays.asList(0, 1, 2, 3, 4, 5);
    Set targetSet = new HashSet<>(sourceList);
}

Como você pode ver, o processo de conversão é seguro e muito simples, pois os construtores de cada coleção aceitam outra coleção como fonte.

2.2. With goiaba

Vamos fazer a mesma conversão usando Guava:

public void givenUsingGuava_whenListConvertedToSet_thenCorrect() {
    List sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5);
    Set targetSet = Sets.newHashSet(sourceList);
}

2.3. Com Coleções Apache Commons

A seguir, vamos usar a API Commons Collections para converter entreList eSet:

public void givenUsingCommonsCollections_whenListConvertedToSet_thenCorrect() {
    List sourceList = Lists.newArrayList(0, 1, 2, 3, 4, 5);
    Set targetSet = new HashSet<>(6);
    CollectionUtils.addAll(targetSet, sourceList);
}

3. ConvertaSet emList

3.1. Com Plain Java

Vamos agora fazer a conversão reversa -from a Set to a List – using Java:

public void givenUsingCoreJava_whenSetConvertedToList_thenCorrect() {
   Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5);
   List targetList = new ArrayList<>(sourceSet);
}

3.2. Com goiaba

E a solução Goiaba:

public void givenUsingGuava_whenSetConvertedToList_thenCorrect() {
    Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5);
    List targetList = Lists.newArrayList(sourceSet);
}

Muito semelhante à abordagem java, apenas com um pouco menos de código duplicado.

3.3. Com Coleções Apache Commons

Finalmente, a solução Commons Collections para converter entre aSete aList:

public void givenUsingCommonsCollections_whenSetConvertedToList_thenCorrect() {
    Set sourceSet = Sets.newHashSet(0, 1, 2, 3, 4, 5);
    List targetList = new ArrayList<>(6);
    CollectionUtils.addAll(targetList, sourceSet);
}

4. Conclusão

A implementação de todos esses exemplos e trechos de códigocan be found over on GitHub - este é um projeto baseado em Maven, portanto, deve ser fácil de importar e executar como está.