1
resposta

[Projeto] Desafio Lambdas

package br.com.pratica.lambdas.funcionais;

@FunctionalInterface
public interface Multiplicacao {
    int multiplicar(int a, int b);
}
package br.com.pratica.lambdas.funcionais;

@FunctionalInterface
public interface Divisao {
    double dividir(double a, double b);
}
package br.com.pratica.lambdas.funcionais;

@FunctionalInterface
public interface VerificadorPalindromo {
    boolean verificarPalindromo(String str);
}
package br.com.pratica.lambdas.principal;

import br.com.pratica.lambdas.funcionais.Divisao;
import br.com.pratica.lambdas.funcionais.Multiplicacao;
import br.com.pratica.lambdas.funcionais.VerificadorPalindromo;

import java.util.*;

public class Main {
    public static void main(String[] args) {

        // 1 - Multiplicação
        Multiplicacao mult = (a, b) -> a * b;
        System.out.println("Multiplicação: " + mult.multiplicar(5, 3));

        // 2 - Número primo
        java.util.function.Predicate<Integer> ehPrimo = n -> {
            if (n <= 1) return false;
            for (int i = 2; i < n; i++) {
                if (n % i == 0) return false;
            }
            return true;
        };
        System.out.println("É primo? " + ehPrimo.test(7));

        // 3 - String para maiúscula
        java.util.function.Function<String, String> maiuscula =
                str -> str.toUpperCase();
        System.out.println("Maiúscula: " + maiuscula.apply("disciplina"));

        // 4 - Palíndromo
        VerificadorPalindromo palindromo = str -> {
            String invertida = new StringBuilder(str).reverse().toString();
            return str.equalsIgnoreCase(invertida);
        };
        System.out.println("É palíndromo? " + palindromo.verificarPalindromo("arara"));

        // 5 - Multiplicar lista por 3
        List<Integer> numeros = new ArrayList<>(Arrays.asList(1, 2, 3, 4));
        numeros.replaceAll(n -> n * 3);
        System.out.println("Lista x3: " + numeros);

        // 6 - Ordenar strings
        List<String> nomes = new ArrayList<>(Arrays.asList("Carlos", "Ana", "Bruno"));
        nomes.sort((a, b) -> a.compareTo(b));
        System.out.println("Ordenado: " + nomes);

        // 7 - Divisão com exceção
        Divisao divisao = (a, b) -> {
            if (b == 0) {
                throw new ArithmeticException("Divisão por zero não permitida!");
            }
            return a / b;
        };

        try {
            System.out.println("Divisão: " + divisao.dividir(10, 2));
            System.out.println("Divisão: " + divisao.dividir(10, 0));
        } catch (ArithmeticException e) {
            System.out.println("Erro: " + e.getMessage());
        }
    }
}
1 resposta

Oi, Giulia! Como vai?

Agradeço por compartilhar.

Gostei da organização do seu desafio, porque você separou bem as interfaces funcionais e usou lambdas em diferentes cenários, como multiplicação, verificação de número primo, transformação de texto, palíndromo, ordenação de lista e tratamento da divisão por zero. O uso do Predicate, Function, replaceAll e sort mostra uma boa prática com recursos funcionais do Java.

Continue praticando dessa forma, pois testar cada lambda com exemplos no main ajuda bastante a fixar o conteúdo. Dica: no verificador de palíndromo, você pode usar trim() e remover espaços antes da comparação, assim a lógica também funcionaria melhor com frases ou textos digitados com espaços extras.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!