Search buenodc

Nesta página
  1. layout: image-right image: https://c.tenor.com/2xuuzQh8N1AAAAAC/tenor.gif
  2. layout: image-right image: https://c.tenor.com/2xuuzQh8N1AAAAAC/tenor.gif
  3. layout: image image: https://media.geeksforgeeks.org/wp-content/uploads/20240410101419/Getting-Started-with-Array-Data-Structure.webp backgroundSize: contain title: array ilustration
  4. Links importantes
  5. layout: center class: text-center

Listas

Prof. Me. Danilo Bueno


layout: image-right image: https://c.tenor.com/2xuuzQh8N1AAAAAC/tenor.gif

Listas

Listas estão por toda parte! Lista de compras, lista de tarefas, lista de contatos…

Na programação:

Listas (ou Arrays Dinâmicos) são estruturas de dados que permitem armazenar coleções de elementos de forma ordenada.


layout: image-right image: https://c.tenor.com/2xuuzQh8N1AAAAAC/tenor.gif

Por que são importantes em Web?

  • Lista de produtos em um e-commerce
  • Lista de usuários cadastrados
  • Lista de posts em um blog

Websites dinâmicos vivem de listas de dados!


Conhecendo o ArrayList

A classe em Java que representa listas dinâmicas.

  • Dinâmica: O tamanho da lista pode crescer ou diminuir conforme adicionamos ou removemos elementos.
  • Armazena: Objetos! Em Java Web, frequentemente strings, números, objetos de classes que representam dados (ex: Usuario, Produto).
  • Ordenada: A ordem em que você adiciona os elementos é mantida.
  • Indexada: Cada elemento tem uma posição (índice), começando do 0.

Conhecendo o ArrayList

Exemplo de criação de uma lista vazia.

import java.util.ArrayList;

public class ExemploArrayList {
    public static void main(String[] args) {
        // Criando uma ArrayList de Strings
        ArrayList<String> alunos = new ArrayList<>(); 
    }
}

layout: image image: https://media.geeksforgeeks.org/wp-content/uploads/20240410101419/Getting-Started-with-Array-Data-Structure.webp backgroundSize: contain title: array ilustration


Adicionando Elementos

O método add() é usado para inserir um novo elemento ao final da lista.

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

alunos.add("Ana"); // Adiciona "Ana" ao final
alunos.add("Bruno"); // Adiciona "Bruno" ao final
alunos.add("Carla"); // Adiciona "Carla" ao final
// Saída: [Ana, Bruno, Carla]
System.out.println("Lista de alunos: " + alunos); 

Dica: Você também pode usar add(índice, elemento) para adicionar em uma posição específica (mas cuidado para não “pular” posições!).


Acessando Elementos

O método get(índice) retorna o elemento que está na posição especificada

ArrayList<String> alunos = new ArrayList<>();
alunos.add("Ana"); alunos.add("Bruno"); alunos.add("Carla");

String a1 = alunos.get(0); //Pega o elemento no índice 0 (Ana)
String a2 = alunos.get(1); //Pega o elemento no índice 1 (Bruno)

System.out.println("Primeiro: " + a1); //Ana
System.out.println("Segundo: " + a2); //Bruno

// Erro: IndexOutOfBoundsException (índice 3 não existe)
// String alunoInexistente = alunos.get(3); 

Editando Elementos

O método set(índice, novoElemento) substitui o elemento que está na posição índice pelo novoElemento.

ArrayList<String> alunos = new ArrayList<>();
alunos.add("Ana");
alunos.add("Bruno");
alunos.add("Carlos"); // Erro de digitação, era Carla!

System.out.println("original:" + alunos); //[Ana, Bruno, Carlos]

alunos.set(2, "Carla"); // Edita elemento 2 (Carlos -> Carla)

System.out.println("editada:" + alunos); //[Ana, Bruno, Carla]

Removendo Elementos - parte 1

Operação remove(índice): Remove o elemento na posição índice. Os elementos após essa posição são “deslocados” para preencher o espaço.

ArrayList<String> alunos = new ArrayList<>();
alunos.add("Ana") ;alunos.add("Bruno"); alunos.add("Carla");
System.out.println("original: " + alunos); //[Ana, Bruno, Carla]

alunos.remove(1); //Remove o elemento no índice 1 (Bruno)
System.out.println("final: " + alunos); //[Ana, Carla]

Importante: Remover elementos altera os índices dos elementos seguintes! Tenha cuidado ao remover em loops com base em índices.


Removendo Elementos - parte 2

Operação remove(objeto): Remove a primeira ocorrência do objeto na lista. Retorna true se removeu, false se o objeto não estava na lista.

ArrayList<String> alunos = new ArrayList<>();
alunos.add("Ana"); alunos.add("Bruno"); alunos.add("Carla");

System.out.println("original: " + alunos); //[Ana, Bruno, Carla]

alunos.remove("Carla");//Remove a primeira ocorrência de "Carla"
System.out.println("final: " + alunos); //[Ana, Bruno]

Deletando a Lista

O método clear() remove todos os elementos da lista, deixando-a vazia.

ArrayList<String> alunos = new ArrayList<>();
alunos.add("Ana"); alunos.add("Bruno"); alunos.add("Carla");

System.out.println("original: " + alunos); //[Ana, Bruno, Carla]

alunos.clear(); // Remove todos os elementos

System.out.println("final: " + alunos); //[] (lista vazia)
System.out.println("tamanho: " + alunos.size()); //tamanho: 0

Percorrendo a Lista

Formas de Percorrer:

  1. Loop for tradicional (com índice):

    • Útil quando você precisa do índice do elemento.
  2. Loop for-each (aprimorado):

    • Mais simples e legível para apenas acessar os elementos, sem precisar do índice.

Percorrendo a Lista - forma 1

Utilizando o for tradicional

ArrayList<String> alunos = new ArrayList<>();
alunos.add("Ana"); alunos.add("Bruno"); alunos.add("Carla");

// Loop do índice 0 até o tamanho da lista - 1
for (int i = 0; i < alunos.size(); i++) {
    String aluno = alunos.get(i); // Pega o aluno no índice i
    System.out.println("Aluno na posição " + i + ": " + aluno);
}

Importante: perceba a utilização do alunos.size() para retornar o tamanho da lista


Percorrendo a Lista - forma 2

Utilizando o for-each: o for “aprimorado”

ArrayList<String> alunos = new ArrayList<>();
alunos.add("Ana"); alunos.add("Bruno"); alunos.add("Carla");

// Para cada "aluno" DENTRO da lista "alunos"
for (String aluno : alunos) { 
    System.out.println("Aluno: " + aluno);
}
  • Mais curto e fácil de ler, percorre cada elemento da lista automaticamente.
  • Ideal quando você só precisa acessar os elementos, sem se preocupar com o índice.

Listas na Web

Imagine um sistema web simples de lista de tarefas.

  • Você pode usar um ArrayList<String> para armazenar as tarefas na memória
  • Quando um usuário adiciona uma tarefa, você usa add().
  • Para exibir as tarefas na tela, você percorre a lista com um loop for-each.
  • Para marcar uma tarefa como “concluída”, você pode usar remove() (talvez buscando pelo índice ou pelo texto da tarefa).

Exemplo de lista com Spring Boot

1 - Criando a lista na classe controladora

@Controller
public class ProductController {

    public List<Product> products = new ArrayList<Product>();

    ProductController() {
        products.add(new Product("Notebook", 3500.00));
        products.add(new Product("Smartphone", 1500.00));
    }    
}

Importante: A lista é um atributo da classe; A utilização do construtor;


Exemplo de lista com Spring Boot

2 - Enviando a lista para a visão com o Model

@Controller
public class ProductController {
    
    public List<Product> products = new ArrayList<Product>();
    
    @GetMapping("/products")
    public String index(Model model) {
        model.addAttribute("products", products);
        return "list";
    }
}

Exemplo de lista com Spring Boot

Percorrendo a lista com a diretiva th:each do Thymeleaf

<table>
    <tr>
        <th>Name</th>
        <th>Description</th>
        <th>Price</th>
    </tr>
    <tr th:each="product : ${products}">
        <td th:text="${product.name}"></td>
        <td th:text="${product.description}"></td>
        <td th:text="${product.price}"></td>
    </tr>
</table>

Recapitulando:

  • Listas (ArrayList) são essenciais para organizar dados em Java Web.
  • Aprendemos as operações básicas: add(), get(), set(), remove(), clear().
  • Sabemos como percorrer listas com loops for e for-each.
  • Vimos um exemplo simples de como listas podem ser usadas em aplicações web.

layout: center class: text-center

Obrigado!

[email protected] · website/docs · github