🧩 Exercícios: Programação Funcional: Lambdas, Method References e Stream API
Spec Sistemas Com Java • Trilha Progressiva em 4 Níveis
🧭 Navegação Pedagógica
-
📖 Teoria do Capítulo 💻 Exemplos 📊 Slides 🧠 Quiz
🎯 Nível 1: Fundamentos
Problema 14.1 — Expressões Lambda e Interfaces Funcionais Nativas (Predicate, Function, Consumer)
Contexto: Expressões Lambda e Interfaces Funcionais Nativas (Predicate, Function, Consumer) no contexto de Programação Funcional: Lambdas, Method References e Stream API.
Requisitos de Execução:
- Utilizar
Predicate<String>para filtrar textos eFunction<String, Integer>para mapear tamanhos.
Resultado Esperado
Interfaces funcionais avaliadas com lambdas puras.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_14_1_SeuNome - Envie na tarefa:
Atividade Cap 14 - Programação Funcional: Lambdas, Method References e Stream API
🔑 Gabarito de Código & Solução Comentada
package com.empresa.sistemas;
import java.util.function.Function;
import java.util.function.Predicate;
public class LambdasDemo {
public static void main(String[] args) {
Predicate<String> ehValido = s -> s.length() > 3;
Function<String, String> formatar = String::toUpperCase;
System.out.println("Resultado: " + formatar.apply("java"));
}
}
🔍 Nível 2: Prática
Problema 14.2 — Pipeline de Stream API com filter(), map() e collect(Collectors.toList())
Contexto: Pipeline de Stream API com filter(), map() e collect(Collectors.toList()) no contexto de Programação Funcional: Lambdas, Method References e Stream API.
Requisitos de Execução:
- Filtrar lista de inteiros pares, multiplicar por 10 e coletar em lista final.
Resultado Esperado
Pipeline funcional processado com Stream API.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_14_2_SeuNome - Envie na tarefa:
Atividade Cap 14 - Programação Funcional: Lambdas, Method References e Stream API
🔑 Gabarito de Código & Solução Comentada
package com.empresa.sistemas;
import java.util.List;
public class StreamPipelineDemo {
public static void main(String[] args) {
List<Integer> nums = List.of(1, 2, 3, 4, 5, 6);
List<Integer> resultado = nums.stream()
.filter(n -> n % 2 == 0)
.map(n -> n * 10)
.toList();
System.out.println("Stream Result: " + resultado);
}
}
⚡ Nível 3: Integração
Problema 14.3 — Agrupamentos Complexos com Collectors.groupingBy e summarizingDouble
Contexto: Agrupamentos Complexos com Collectors.groupingBy e summarizingDouble no contexto de Programação Funcional: Lambdas, Method References e Stream API.
Requisitos de Execução:
- Agrupar funcionários por departamento calculando estatísticas completas de salário com
summarizingDouble.
Resultado Esperado
Estatísticas agregadas calculadas em passagem única via Collectors.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_14_3_SeuNome - Envie na tarefa:
Atividade Cap 14 - Programação Funcional: Lambdas, Method References e Stream API
🔑 Gabarito de Código & Solução Comentada
package com.empresa.sistemas;
import java.util.*;
import java.util.stream.Collectors;
public class GroupingDemo {
record Func(String dep, double sal) {}
public static void main(String[] args) {
List<Func> equipe = List.of(new Func("TI", 8000), new Func("TI", 6000), new Func("RH", 4500));
var stats = equipe.stream().collect(Collectors.groupingBy(Func::dep, Collectors.averagingDouble(Func::sal)));
System.out.println("Medias: " + stats);
}
}
🏆 Nível 4: Desafio Corporativo
Problema 14.4 — Streams Paralelos (parallelStream) e Avaliação de Overhead em Concorrência
Contexto: Streams Paralelos (parallelStream) e Avaliação de Overhead em Concorrência no contexto de Programação Funcional: Lambdas, Method References e Stream API.
Requisitos de Execução:
- Processar coleção massiva com
parallelStream()medindo speedup e prevenindo efeitos colaterais com redução pura.
Resultado Esperado
Processamento paralelo de Stream com ForkJoinPool nativo homologado.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_14_4_SeuNome - Envie na tarefa:
Atividade Cap 14 - Programação Funcional: Lambdas, Method References e Stream API
🔑 Gabarito de Código & Solução Comentada
package com.empresa.sistemas;
import java.util.List;
import java.util.stream.LongStream;
public class ParallelStreamDemo {
public static void main(String[] args) {
long soma = LongStream.rangeClosed(1, 1_000_000).parallel().sum();
System.out.println("Soma paralela: " + soma);
}
}
| ⬅️ Voltar ao Índice de Exercícios | 📚 Sumário de Tópicos |