Conversão entre Array e Lista

JavaBeginner
Pratique Agora

Introdução

Arrays são estruturas de dados lineares amplamente utilizadas em Java para armazenar coleções de dados. Eles permitem acesso aleatório a qualquer elemento do array usando seu índice, pois os elementos são alocados em blocos contíguos de memória. Por outro lado, a interface List fornece uma maneira de manter uma coleção ordenada de dados, e é implementada por classes como ArrayList e LinkedList. Neste laboratório, aprenderemos como converter um array em uma lista e vice-versa usando vários métodos em Java.

Convertendo Array para Lista usando o Método asList()

O método asList() da classe Arrays pode ser usado para converter um array em uma lista. Ele recebe o array como um parâmetro e retorna uma lista de seus elementos. Realizaremos as seguintes etapas para converter um array em uma lista usando o método asList():

  • Criar um array de strings e um array de inteiros, e inicializá-los com valores
  • Usar o método Arrays.asList() para converter os arrays em listas
  • Imprimir as listas
import java.util.Arrays;
import java.util.List;

public class ArrayToList {
    public static void main(String[] args) {
        // Step 1: Converting Array to List using asList() Method
        // Creating a string array
        String[] strArr = {"this", "is", "a", "string", "array"};
        // Creating an integer array
        Integer[] intArr = {2, 3, 5, 7, 11, 13, 17};
        // Converting arrays to lists using asList() method
        List<String> strList = Arrays.asList(strArr);
        List<Integer> intList = Arrays.asList(intArr);
        // Printing the lists
        System.out.println("Array to List using asList() Method: ");
        System.out.println(strList);
        System.out.println(intList);
    }
}

Para executar o código, abra o terminal, navegue até a pasta do projeto e digite o seguinte comando: javac ArrayToList.java && java ArrayToList

Convertendo Array para Lista usando o Método Collections.addAll()

O método Collections.addAll() pode ser usado para adicionar todos os elementos de um array a uma lista. Primeiro, precisamos criar uma lista vazia e, em seguida, passar o array existente e a nova lista como parâmetros para este método. Realizaremos as seguintes etapas para converter um array em uma lista usando o método Collections.addAll():

  • Criar um array de strings e um array de inteiros, e inicializá-los com valores
  • Criar uma lista vazia dos tipos de dados correspondentes, usando a classe ArrayList
  • Usar o método Collections.addAll() para adicionar os elementos dos arrays às listas
  • Imprimir as listas
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class ArrayToList {
    public static void main(String[] args) {
        // Step 2: Converting Array to List using Collections.addAll() Method
        // Creating a string array
        String[] strArr = {"this", "is", "a", "string", "array"};
        // Creating an integer array
        Integer[] intArr = {2, 3, 5, 7, 11, 13, 17};
        // Creating empty lists of the corresponding data types
        List<String> strList = new ArrayList<String>();
        List<Integer> intList = new ArrayList<Integer>();
        // Using the Collections.addAll() method to add the elements of the arrays to the lists
        Collections.addAll(strList, strArr);
        Collections.addAll(intList, intArr);
        // Printing the lists
        System.out.println("Array to List using Collections.addAll() Method: ");
        System.out.println(strList);
        System.out.println(intList);
    }
}

Para executar o código, abra o terminal, navegue até a pasta do projeto e digite o seguinte comando: javac ArrayToList.java && java ArrayToList

Convertendo Array para Lista usando o Método Lists.newArrayList() do Guava

O método Lists.newArrayList() da biblioteca Guava também pode ser usado para converter um array em um ArrayList. Realizaremos as seguintes etapas para converter um array em uma lista usando o método Lists.newArrayList():

  • Criar um array de strings e um array de inteiros, e inicializá-los com valores
  • Usar o método Lists.newArrayList() para converter os arrays em ArrayLists
  • Imprimir os ArrayLists
import com.google.common.collect.Lists;
import java.util.List;

public class ArrayToList {
    public static void main(String[] args) {
        // Step 3: Converting Array to List using Guava's Lists.newArrayList() Method
        // Creating a string array
        String[] strArr = {"this", "is", "a", "string", "array"};
        // Creating an integer array
        Integer[] intArr = {2, 3, 5, 7, 11, 13, 17};
        // Converting arrays to ArrayLists using Guava's Lists.newArrayList() method
        List<String> strList = Lists.newArrayList(strArr);
        List<Integer> intList = Lists.newArrayList(intArr);
        // Printing the ArrayLists
        System.out.println("Array to List using Guava's Lists.newArrayList() Method: ");
        System.out.println(strList);
        System.out.println(intList);
    }
}

Para executar o código, abra o terminal, navegue até a pasta do projeto e digite o seguinte comando: javac ArrayToList.java && java ArrayToList

Escrevendo nosso próprio método para converter Array em Lista

Também podemos escrever nosso próprio método para converter um array em uma lista. Usaremos o método add() da interface List para adicionar elementos do array à lista. Realizaremos as seguintes etapas para escrever nosso próprio método:

  • Escrever um método que recebe um array de strings como parâmetro e retorna uma lista de strings
  • Dentro do método, criar um ArrayList vazio
  • Iterar sobre o array e adicionar cada elemento ao ArrayList usando o método add()
  • Retornar o ArrayList
import java.util.ArrayList;
import java.util.List;

public class ArrayToList {
    // Step 4: Writing our own method to convert Array to List
    public static List<String> arrayToList(String[] strArr) {
        List<String> strList = new ArrayList<String>();
        for(int i = 0; i <= strArr.length - 1; i++)
            strList.add(strArr[i]);
        return strList;
    }

    public static void main(String[] args) {
        // Creating a string array
        String[] strArr = {"this", "is", "a", "string", "array"};
        // Converting array to list using our own method
        List<String> strList = arrayToList(strArr);
        // Printing the list
        System.out.println("Array to List using our own method: ");
        System.out.println(strList);
    }
}

Para executar o código, abra o terminal, navegue até a pasta do projeto e digite o seguinte comando: javac ArrayToList.java && java ArrayToList

Convertendo Lista para Array usando o Método toArray()

O método toArray() pode ser usado para converter uma lista em um array. Ele recebe um array como parâmetro e retorna um array contendo os elementos da lista. Realizaremos as seguintes etapas para converter uma lista em um array usando o método toArray():

  • Criar um ArrayList e adicionar elementos a ele
  • Usar o método toArray() para converter o ArrayList em um array
  • Imprimir o array
import java.util.ArrayList;
import java.util.List;

public class ArrayToList {
    public static void main(String[] args) {
        // Step 5: Converting List to Array using toArray() Method
        // Creating an ArrayList
        List<String> strList = new ArrayList<String>();
        strList.add("this");
        strList.add("is");
        strList.add("a");
        strList.add("string");
        strList.add("array");

        // Converting ArrayList to array using toArray() method
        String[] strArr = strList.toArray(new String[0]);

        // Printing the array
        System.out.println("List to Array using toArray() Method: ");
        for(int i = 0; i <= strArr.length - 1; i++)
            System.out.print(strArr[i] + " ");
    }
}

Para executar o código, abra o terminal, navegue até a pasta do projeto e digite o seguinte comando: javac ArrayToList.java && java ArrayToList

Convertendo Lista para Array usando o Método Iterables.toArray() do Guava

O método Iterables.toArray() da biblioteca Guava também pode ser usado para converter uma lista em um array. Realizaremos as seguintes etapas para converter uma lista em um array usando o método Iterables.toArray():

  • Criar um ArrayList e adicionar elementos a ele
  • Usar o método Iterables.toArray() para converter o ArrayList em um array
  • Imprimir o array
import com.google.common.collect.Iterables;
import java.util.ArrayList;
import java.util.List;

public class ArrayToList {
    public static void main(String[] args) {
        // Step 6: Converting List to Array using Guava's Iterables.toArray() Method
        // Creating an ArrayList
        List<String> strList = new ArrayList<String>();
        strList.add("this");
        strList.add("is");
        strList.add("a");
        strList.add("string");
        strList.add("array");

        // Converting ArrayList to array using Guava's Iterables.toArray() method
        String[] strArr = Iterables.toArray(strList, String.class);

        // Printing the array
        System.out.println("List to Array using Guava's Iterables.toArray() Method: ");
        for(int i = 0; i <= strArr.length - 1; i++)
            System.out.print(strArr[i] + " ");
    }
}

Para executar o código, abra o terminal, navegue até a pasta do projeto e digite o seguinte comando: javac ArrayToList.java && java ArrayToList

Escrevendo nosso próprio método para converter Lista em Array

Também podemos escrever nosso próprio método para converter uma lista em um array. Iremos iterar pela lista e buscar cada elemento usando o método get() e adicioná-lo ao array usando os índices do array. Realizaremos as seguintes etapas para escrever nosso próprio método:

  • Escrever um método que recebe uma lista de strings como parâmetro e retorna um array de strings
  • Dentro do método, criar um array de strings vazio com o tamanho igual ao tamanho da lista
  • Iterar pela lista e adicionar cada elemento ao array usando os índices do array
  • Retornar o array
import java.util.ArrayList;
import java.util.List;

public class ArrayToList {
    public static String[] listToArray(List<String> strList) {
        String[] strArr = new String[strList.size()];
        for(int i = 0; i <= strList.size() - 1; i++)
            strArr[i] = strList.get(i);
        return strArr;
    }

    public static void main(String[] args) {
        // Writing our own method to convert List to Array
        // Creating an ArrayList
        List<String> strList = new ArrayList<String>();
        strList.add("this");
        strList.add("is");
        strList.add("a");
        strList.add("string");
        strList.add("array");

        // Converting ArrayList to array using our own method
        String[] strArr = listToArray(strList);

        // Printing the array
        System.out.println("List to Array using our own method: ");
        for(int i = 0; i <= strArr.length - 1; i++)
            System.out.print(strArr[i] + " ");
    }
}

Para executar o código, abra o terminal, navegue até a pasta do projeto e digite o seguinte comando: javac ArrayToList.java && java ArrayToList

Resumo

Neste laboratório, exploramos vários métodos para converter um array em uma lista e uma lista de volta em um array em Java. Vimos como podemos usar o método asList() da classe Arrays, o método addAll() da classe Collections e o método Lists.newArrayList() da biblioteca Guava para converter um array em uma lista. Também vimos como podemos usar o método toArray() e o método Iterables.toArray() da biblioteca Guava para converter uma lista em um array. Finalmente, escrevemos nossos próprios métodos para realizar essas conversões. Compreender os diferentes métodos de conversão de arrays para listas e vice-versa pode nos ajudar a utilizar o potencial de ambas as estruturas de dados e a aprimorar nossas habilidades de programação em Java.