Spec Sistemas Com Java • Trilha Progressiva em 4 Níveis


🧭 Navegação Pedagógica


🎯 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:

  1. Utilizar Predicate<String> para filtrar textos e Function<String, Integer> para mapear tamanhos.

Resultado Esperado

Interfaces funcionais avaliadas com lambdas puras.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_14_1_SeuNome
  2. 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:

  1. 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)

  1. Salve o arquivo como: Atividade_14_2_SeuNome
  2. 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:

  1. 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)

  1. Salve o arquivo como: Atividade_14_3_SeuNome
  2. 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:

  1. 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)

  1. Salve o arquivo como: Atividade_14_4_SeuNome
  2. 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