📊 Capítulo 13: Generics, Set & Map
Especialização em Sistemas com Java
🗺️ O Princípio PECS (Producer Extends, Consumer Super)
flowchart LR
subgraph PRODUCER ["Coleção Produtora de Dados (Somente Leitura)"]
P1["List<? extends Number> (Aceita List<Integer>, List<Double>)\nPermite: Number n = lista.get(0)\nPROIBIDO: lista.add(...) (O compilador bloqueia inserção!)"]
end
subgraph CONSUMER ["Coleção Consumidora de Dados (Somente Escrita)"]
C1["List<? super Integer> (Aceita List<Integer>, List<Number>, List<Object>)\nPermite: lista.add(10)\nLeitura segura apenas como: Object obj = lista.get(0)"]
end
style PRODUCER fill:#ede7f6,stroke:#512da8,stroke-width:2px
style CONSUMER fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
🎯 Slide 1: Coleções Set (Conjuntos Únicos)
HashSet: Performance imbatível $O(1)$ via tabela hash (não garante ordem).LinkedHashSet: $O(1)$ mantendo a ordem de inserção dos elementos.TreeSet: $O(\log n)$ mantendo elementos ordenados em árvore rubro-negra (Comparable).
🎯 Slide 2: O Contrato Sagrado: hashCode() e equals()
-
Regra Absoluta: Se dois objetos são iguais segundo
equals(), eles devem obrigatoriamente retornar o mesmohashCode()! - Quebrar essa regra faz com que
HashSeteHashMapnão consigam encontrar seus objetos na tabela hash!
🎯 Slide 3: Mapas Chave-Valor (Map<K, V>)
Map<String, Double> precos = new HashMap<>();
precos.put("Notebook", 4500.0);
precos.put("Mouse", 150.0);
precos.merge("Mouse", 20.0, Double::sum); // Incrementa o valor atomicamente!
🔗 Navegação do Capítulo 13
| 📖 Ler Conteúdo Completo | 🧠 Fazer Quiz | 💻 Ver Exemplos | 🧩 Exercícios |
Slide 1 de 1
Atalhos: ← → Navegar • Espaço Avançar • F Tela Cheia • Home Início • End Fim