📊 Capítulo 14: Lambdas & Stream API
Especialização em Sistemas com Java
🗺️ O Pipeline de Processamento Declarativo da Stream API
flowchart LR
SRC["Fonte de Dados: lista.stream()"]
--> FILTER["Operação Intermediária: .filter(p -> p.getPreco() > 100.0)"]
--> MAP["Operação Intermediária: .map(Produto::getNome)"]
--> SORT["Operação Intermediária: .sorted()"]
--> TERM["Operação Terminal: .toList() / .reduce() / .collect()"]
NOTE["Lazy Evaluation: As operações intermediárias NUNCA executam\naté que a operação terminal seja chamada! ⚡"]
TERM -.-> NOTE
style SRC fill:#ede7f6,stroke:#512da8,stroke-width:2px
style FILTER fill:#fff3e0,stroke:#ff9800,stroke-width:1.5px
style MAP fill:#e1f5fe,stroke:#03a9f4,stroke-width:1.5px
style SORT fill:#fff9c4,stroke:#fbc02d,stroke-width:1.5px
style TERM fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
style NOTE fill:#c8e6c9,stroke:#2e7d32,stroke-width:1.5px
🎯 Slide 1: As 4 Interfaces Funcionais Centrais
Predicate<T>:T -> boolean(Usado em.filter()).Function<T, R>:T -> R(Usado em.map()).Consumer<T>:T -> void(Usado em.forEach()).Supplier<T>:() -> T(Fábrica sem argumentos).
🎯 Slide 2: Method References Elegantes
// Expressão Lambda equivalente:
lista.forEach(p -> p.aumentarPreco(1.1));
// Method Reference conciso:
lista.forEach(Produto::atualizarEstoque);
lista.sort(Comparator.comparing(Produto::getNome));
🎯 Slide 3: Agrupamentos Complexos com Collectors.groupingBy
Map<Categoria, List<Produto>> produtosPorCategoria = produtos.stream()
.collect(Collectors.groupingBy(Produto::getCategoria));
- Substitui loops imperativos com dezenas de
ifem uma única instrução limpa e expressiva!
🔗 Navegação do Capítulo 14
| 📖 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