🚀 Capítulo 06: Guardando os Pokémons (Tema: Pokémon)
NOTE
Este capítulo utiliza a temática de Pokémon para explicar as Coleções (Collections) em Java. Aprenda a guardar e organizar conjuntos de dados!
1. 🎯 Objetivo da Aula
Compreender o conceito de Coleções (Collections) em Java, aprendendo a usar as três estruturas mais famosas: List (Listas), Set (Conjuntos) e Map (Mapas/Dicionários).
2. 🏢 O Cenário Prático (Seu Desafio)
No universo Pokémon, um mestre treinador captura dezenas de monstrinhos diferentes durante a sua jornada. Para não virar uma bagunça, ele precisa guardá-los de forma organizada na sua Pokédex ou nas caixas do computador.
- Se ele quer uma lista onde a ordem de captura importa e ele pode ter Pokémons repetidos (ex: ter Pikachus), ele usa uma List!
- Se ele quer garantir que só tenha espécies únicas (sem repetição), ele usa um Set!
- Se ele quer buscar um Pokémon diretamente pelo número dele na Pokédex, ele usa um Map (onde o número é a chave e o Pokémon é o valor).
No Java, nós não usamos variáveis comuns para guardar muitos dados juntos. Nós usamos o Framework de Collections! Seu desafio é organizar a sua Pokédex!
🧠 Fundamentos: A Teoria Traduzida
Para usar coleções em Java, nós precisamos dizer qual tipo de dado vai lá dentro usando os sinais de menor e maior < > (chamados de Generics).
📝 1. List (ArrayList):
É uma lista ordenada de elementos que aceita repetições.
import java.util.ArrayList;
import java.util.List;
public class ExemploList {
public static void main(String[] args) {
List<String> pokedex = new ArrayList<>();
pokedex.add("Pikachu");
pokedex.add("Charmander");
pokedex.add("Pikachu"); // Aceita repetido!
}
}🚫 2. Set (HashSet):
É um conjunto de elementos que não aceita repetições. Se você tentar adicionar algo que já existe, ele apenas ignora.
import java.util.HashSet;
import java.util.Set;
public class ExemploSet {
public static void main(String[] args) {
Set<String> medalhas = new HashSet<>();
medalhas.add("Rocha");
medalhas.add("Cascata");
medalhas.add("Rocha"); // O Java ignora este segundo!
}
}🗺️ 3. Map (HashMap):
Guarda pares de “Chave” e “Valor”. Você busca o valor através da chave!
import java.util.HashMap;
import java.util.Map;
public class ExemploMap {
public static void main(String[] args) {
Map<Integer, String> pokemonsPorNumero = new HashMap<>();
pokemonsPorNumero.put(25, "Pikachu");
pokemonsPorNumero.put(4, "Charmander");
// Buscando o número 25:
String p = pokemonsPorNumero.get(25); // Retorna "Pikachu"
}
}4. 📖 Exemplo Guiado: Listando a Equipe
Vamos criar uma lista com os Pokémons da nossa equipe e usar um loop para mostrar o nome de cada um:
import java.util.ArrayList;
import java.util.List;
public class EquipePokemon {
public static void main(String[] args) {
List<String> equipe = new ArrayList<>();
equipe.add("Bulbasaur");
equipe.add("Squirtle");
equipe.add("Charmander");
// Loop especial para ler listas (Foreach)
for (String pokemon : equipe) {
System.out.println("Eu escolho você, " + pokemon + "!");
}
}
}5. 🛠️ Prática Obrigatória 1: Escolhendo a Coleção
Para cada situação abaixo, diga qual coleção (List, Set ou Map) seria a mais adequada para usar:
- Você quer guardar o histórico de compras de um cliente (a ordem das compras importa e ele pode comprar o mesmo item mais de uma vez).
- Você quer guardar a lista de CPFs dos clientes cadastrados (não pode haver CPF repetido de jeito nenhum).
- Você quer criar uma lista de produtos onde você digita o código de barras e o sistema te devolve o nome do produto.
6. 🛠️ Prática Obrigatória 2: Criando a Lista
- Escreva a linha de código em Java que cria uma lista (
List) de números inteiros (Integer) chamadanotas.
7. 📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)
- Faça o Commit: No GitHub Desktop, digite a mensagem (ex:
Finaliza Capítulo 06 Java_Pokemon) e clique em Commit to main. - Envie para a Nuvem (Push): Clique em Push origin.
8. 📂 Estrutura de Pastas
spec_backend_com_java_e_springboot/
├── capitulos/
│ └── capitulo_06_pokemon.md💡 Checkpoint de Lógica
Nas coleções do Java, nós não podemos usar tipos primitivos como int ou double dentro do < >. Precisamos usar as classes equivalentes (Wrappers), como Integer e Double!
10. 🔥 Desafio de Fixação
Pesquise qual é a diferença entre um ArrayList e um LinkedList no Java e em qual situação cada um é melhor.
🔑 Gabarito de Código/Fórmulas
Gabarito da Prática 1:
- List (pois aceita duplicatas e mantém a ordem).
- Set (pois garante que não haverá duplicatas).
- Map (pois trabalha com o conceito de Chave e Valor). Gabarito da Prática 2:
List<Integer> notas = new ArrayList<>();