Este laboratório irá guiá-lo através do processo de conversão de uma Lista de Inteiros (Integer List) para um Array de inteiros (int Array) em Java. Esta é uma tarefa comum na programação Java quando você precisa trabalhar com arrays primitivos após coletar dados em uma Lista.
Exploraremos duas abordagens diferentes para realizar esta conversão:
Usando a API Stream do Java com o método stream.mapToInt()
Usando o método ArrayUtils.toPrimitive() da Apache Commons Lang
Ao final deste laboratório, você entenderá ambos os métodos e poderá aplicá-los em suas próprias aplicações Java.
Criar uma Classe Java para Nosso Experimento
Neste primeiro passo, criaremos uma classe Java para demonstrar os métodos de conversão. Usaremos o Maven para gerenciar nossas dependências e a estrutura do projeto.
Primeiro, verifique se você está no diretório do projeto:
cd /home/labex/project
Crie um novo arquivo Java no diretório de origem do Maven:
cd src/main/java
Crie IntegerListToIntArray.java com o seguinte conteúdo:
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang3.ArrayUtils;
public class IntegerListToIntArray {
public static void main(String[] args) {
System.out.println("Demonstração de Conversão de Lista de Inteiros para Array de int");
System.out.println("---------------------------------------");
// Adicionaremos nosso código aqui nos passos seguintes
}
}
Compile o código usando o Maven:
cd /home/labex/project
mvn compile
Execute o programa para verificar se ele funciona:
mvn exec:java
Você deve ver o texto do cabeçalho impresso no console. Se não houver erros, você está pronto para passar para o próximo passo.
Criar e Popular uma Lista de Inteiros
Neste passo, criaremos uma Lista de Integer e adicionaremos alguns números a ela. Antes de começarmos a codificar, vamos entender por que precisamos desta conversão.
Por que Converter entre Lista de Inteiros e Array de int?
Em Java, temos duas maneiras de trabalhar com números:
Tipo Primitivo (int):
Tipo numérico básico que armazena apenas o número
Usa menos memória
Não pode ser usado diretamente em coleções como List
Exemplo: int x = 5;
Classe Wrapper (Integer):
Objeto que contém um número
Pode ser usado em coleções como List
Possui métodos e recursos adicionais
Exemplo: Integer x = 5;
Frequentemente, coletamos números em uma Lista (que requer Integer), mas alguns métodos precisam de um array int primitivo para melhor desempenho. É por isso que precisamos converter entre eles.
Atualizar o Código Java
Vamos modificar nosso arquivo IntegerListToIntArray.java para criar e exibir uma lista de números:
Certifique-se de estar no diretório do projeto:
cd /home/labex/project
Abra src/main/java/IntegerListToIntArray.java e adicione o seguinte código dentro do método main, após as instruções de impressão existentes:
// Criar uma Lista de objetos Integer
List<Integer> integerList = new ArrayList<>();
// Adicionar alguns números à lista
integerList.add(1);
integerList.add(2);
integerList.add(3);
integerList.add(4);
integerList.add(5);
// Exibir o conteúdo da lista
System.out.println("Lista de Inteiros Original:");
for (Integer num : integerList) {
System.out.print(num + " ");
}
System.out.println("\n");
Compile e execute o programa:
mvn compile
mvn exec:java
Você deve ver uma saída semelhante a esta:
Converting Integer List to int Array Demo
---------------------------------------
Original Integer List:
1 2 3 4 5
Esta saída confirma que criamos com sucesso uma Lista de Integer e a preenchemos com números. No próximo passo, aprenderemos como converter esta lista em um array int primitivo.
Converter Lista para Array Usando a API Stream
Neste passo, aprenderemos nosso primeiro método para converter uma Lista de Integer em um array int usando a API Stream do Java. A API Stream fornece uma maneira moderna e eficiente de processar coleções de dados.
Entendendo Streams Java
Um Stream em Java é como um pipeline que pode processar dados passo a passo:
Ele pega dados de uma fonte (nossa Lista)
Processa os dados (converte Integer para int)
Coleta os resultados (em um array)
Adicionar o Código de Conversão
Certifique-se de estar no diretório do projeto:
cd /home/labex/project
Abra src/main/java/IntegerListToIntArray.java e adicione este código após o código de criação da sua lista:
// Método 1: Usando a API Stream
System.out.println("Convertendo usando a API Stream:");
// Converter Lista de Integer para array int usando Stream
int[] intArrayUsingStream = integerList.stream() // Criar um stream da lista
.mapToInt(Integer::intValue) // Converter Integer para int
.toArray(); // Coletar resultados em um array
// Imprimir o array convertido
System.out.println("Array int Convertido:");
for (int value : intArrayUsingStream) {
System.out.print(value + " ");
}
System.out.println("\n");
Compile e execute o programa:
mvn compile
mvn exec:java
Você deve ver uma saída como esta:
Converting Integer List to int Array Demo
---------------------------------------
Original Integer List:
1 2 3 4 5
Converting using Stream API:
Converted int Array:
1 2 3 4 5
Entendendo o Código
Vamos detalhar como a conversão funciona:
integerList.stream() - Cria um stream da nossa lista
.mapToInt(Integer::intValue) - Converte cada Integer em um int
.toArray() - Coleta todos os valores int em um array
Integer::intValue é chamado de referência de método (method reference). É uma forma abreviada de escrever number -> number.intValue().
Converter Lista para Array Usando ArrayUtils
Neste passo, aprenderemos um segundo método para converter nossa lista usando a classe ArrayUtils da biblioteca Apache Commons Lang. Este método é mais direto e pode ser mais fácil de entender para iniciantes.
Entendendo ArrayUtils
A classe ArrayUtils fornece muitos métodos úteis para trabalhar com arrays. O método toPrimitive() especificamente nos ajuda a converter de tipos wrapper (como Integer) para tipos primitivos (como int).
Adicionar o Código de Conversão ArrayUtils
Adicione este código ao seu arquivo IntegerListToIntArray.java após o código da API Stream:
// Método 2: Usando ArrayUtils
System.out.println("Convertendo usando ArrayUtils:");
// Primeiro, converta List<Integer> para Integer[]
Integer[] intermediateArray = integerList.toArray(new Integer[0]);
// Então, converta Integer[] para int[]
int[] intArrayUsingArrayUtils = ArrayUtils.toPrimitive(intermediateArray);
// Imprimir o array convertido
System.out.println("Array int Convertido:");
for (int value : intArrayUsingArrayUtils) {
System.out.print(value + " ");
}
System.out.println("\n");
Compile e execute o programa:
mvn compile
mvn exec:java
Você agora deve ver ambos os métodos de conversão na saída:
Converting Integer List to int Array Demo
---------------------------------------
Original Integer List:
1 2 3 4 5
Converting using Stream API:
Converted int Array:
1 2 3 4 5
Converting using ArrayUtils:
Converted int Array:
1 2 3 4 5
Entendendo o Código
O método ArrayUtils funciona em duas etapas:
integerList.toArray(new Integer[0]) - Converte a Lista em um array de objetos Integer
ArrayUtils.toPrimitive() - Converte o array de Integer em um array de int
Este método é mais direto, mas requer a biblioteca Apache Commons Lang.
Resumo
Neste laboratório, você aprendeu duas maneiras diferentes de converter uma Lista de Integer em um Array de int em Java: