Estruturas de dados (Array & ArrayList)

Nos exercícios anteriores, aprendemos que variáveis ​​nos permitem acessar e armazenar dados. Mas, e se quisermos armazenar vários dados semelhantes? Existe uma boa maneira de organizá-los sem declarar múltiplas variáveis?

Na programação, estruturas de dados são elementos que permitem aos codificadores armazenar vários dados do mesmo tipo. Usar estruturas de dados é uma maneira eficiente de armazenar e acessar grandes volumes de dados. Neste exercício, aprenderemos sobre 2 estruturas de dados usadas em Java: array e ArrayList.

Embora array seja uma estrutura de dados de comprimento fixo, ArrayList é um comprimento variável onde você pode alterar o tamanho da estrutura de dados. Vamos começar examinando arrays!

Array

Digamos que queremos armazenar os 5 melhores filmes favoritos de Patrick. Em vez de criar 5 variáveis, podemos armazenar todos os 5 dados em um array, nossa primeira estrutura de dados!

Para armazenar dados em um array, fazemos o seguinte:

  1. Primeiro declaramos um array especificando um tipo e tamanho de dados (número de dados que podem ser armazenados).
String topMovies[] = new String[5]; // crie um array de Strings de tamanho 5.
  1. Repetimos pelo array (passamos por todos os pontos de dados) e atribuímos os dados a um ponto no array.

Observe que acessamos o array com seu nome e um índice (0 para acessar o 1º elemento, 1 para o 2º…).

topMovies[0] = "Birds Of Prey";
topMovies[1] = "The Birds";
topMovies[2] = "Angry Birds";
topMovies[3] = "Bird Box";
topMovies[4] = "The Secret Life of Pets";
// a array topMovies agora armazena "Birds Of Prey", "The Birds", "Angry Birds", "Bird Box", "The Secret Life of Pets" em ordem

Por que a indexação de array em Java começa com 0?

É tentador e razoável pensar que para acessar o elemento de um array no primeiro índice, deveríamos começar no índice 1.

Porém, quando o computador lê o código arr[1], ele não pensa em obter o elemento de arr.

Na verdade, ele lê arr[1] para obter a distância do elemento 1 do início do array.

Em outras palavras, o índice é na verdade um deslocamento de memória. Para acessar o primeiro elemento, devemos obter o elemento de 0 deslocado do início do array (ou seja, arr[0]).

Uma maneira alternativa de criar um array:

Se conhecermos todos os dados de um array com antecedência, podemos criar o array em uma linha listando todos os dados entre { e }.

Por exemplo:

String topMovies[] = {"Birds Of Prey", "The Birds", "Angry Birds", "Bird Box", "The Secret Life of Pets"};

Assim como inicializamos os dados com seu índice, também podemos acessar/modificar cada dado com seu índice.

Por exemplo:

String movie1 = topMovies[0]; // movie1 tem valor "Birds Of Prey"

Muitas vezes é útil saber quantos elementos há em um array depois de criá-lo (para acessar o último elemento do array, por exemplo). Podemos obter o número de elementos no array no campo length do array, digitando array_name.length.

Por exemplo:

int numOfMovie = topMovies.length; // numOfMovie tem valor 5

Exercício: Escreva um método printArr() que receba uma entrada de array e imprima todos os elementos desse array em ordem

(Dica: utilize for loop e .length para ajudá-lo).

Após clicar em Executar, o programa deverá imprimir o seguinte:

Birds Of Prey, The Birds, Angry Birds, Bird Box, The Secret Life of Pets

Launch Replit

ArrayList

ArrayList é outra estrutura de dados popular em Java. ArrayList é uma classe que foi implementada usando arrays. É semelhante a um array, pois os usuários acessam, armazenam e modificam dados por meio de um índice.

Você cria um ArrayList especificando um nome e o tipo entre < e >. Por exemplo:

ArrayList<String> topMoviesList = new ArrayList<String>();

Para adicionar elementos, chamamos o método add() no ArrayList. Por exemplo:

topMoviesList.add("Birds Of Prey");
topMoviesList.add("The Birds");
topMoviesList.add("Angry Birds");
topMoviesList.add("Bird Box");
topMoviesList.add("The Secret Life of Pets");
// o ArrayList agora armazena"Birds Of Prey", "The Birds", "Angry Birds", "Bird Box", "The Secret Life of Pets" em ordem

Para acessar um elemento em um índice específico, chamamos o método get(). Observe que Java usa indexação baseada em 0, então para obter o primeiro elemento em um ArrayList fazemos uma chamada de método get(0). Por exemplo:

String movie1 = topMoviesList.get(0); // movie1 tem valor "Birds Of Prey"

E, para obter o número de elementos no ArrayList, chamamos o método size(). Por exemplo:

int numOfMovie2 = topMoviesList.size(); // numOfMovie2 tem valor 5

Como mencionamos brevemente acima, a diferença crítica entre array e ArrayList é que você precisa saber antecipadamente o número de elementos a serem armazenados em um array, mas não para um ArrayList.

Para remover um elemento de um ArrayList, chamamos o método remove(). Por exemplo:

System.out.print(topMoviesList.size()); // imprime 5
topMoviesList.remove("Birds Of Prey");
System.out.print(topMoviesList.size()); // imprime 4

Exercício: Escreva um método printList() que receba um ArrayList como entrada e imprima todos os elementos desse ArrayList em ordem

(Dica: utilize for loop e size() para ajudá-lo).

Após clicar em Executar, o programa deverá imprimir o seguinte:

Birds Of Prey, The Birds, Angry Birds, Bird Box, The Secret Life of Pets

Launch Replit

Fim do workshop 🐥

Patrick 🐥 obrigado por participar! Espero que você tenha aprendido muito com este curso :) animation of duck Patrick

(image created by Molang: giphy.com/molangofficialpage)


Você conseguiu!
Minicurso concluído