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
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.
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á.