1
resposta

Desafios - Lambdas

Crie uma expressão lambda que multiplique dois números inteiros. A expressão deve ser implementada dentro de uma interface funcional com o método multiplicacao(int a, int b).

public class Principal {
    public static void main(String[] args) {
        Multiplicacao multi = (a, b) -> a * b;

        int resultado = multi.multiplicacao(5,2);
        System.out.println(resuldado);

    }
}
@FunctionalInterface
public interface Multiplicacao {
    int multiplicacao(int a, int b);
}

Implemente uma expressão lambda que verifique se um número é primo.

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

        Predicate<Integer> primo = numero -> {
            if (numero <= 1) return false;

            for(int i = 2; i <= Math.sqrt(numero); i++) {
                if (numero % i == 0) return false;
            }
            return true;
        };
        System.out.println(primo.test(2));
    }
}
@FunctionalInterface
public interface VerificaPrimo {
    boolean primo(int numero);
}

Crie uma função lambda que receba uma string e a converta para letras maiúsculas.

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

        recebeNome maiúsculas = String::toUpperCase;
        String resultado = maiúsculas.Nome("barbara");

        System.out.println(resultado);


    }
}
public interface recebeNome {
    String Nome (String nome);
}

Crie uma expressão lambda que verifique se uma string é um palíndromo. A expressão deve ser implementada dentro de uma interface funcional com o método boolean verificarPalindromo(String str). Dica: utilize o método reverse da classe StringBuilder

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

        palíndromo pl = str -> {
            String invertida = new StringBuilder(str).reverse().toString();

            return str.equalsIgnoreCase(invertida);
        };

        System.out.println(pl.verificarPalindromo("ovo"));

    }
}
public interface palíndromo {
    boolean verificarPalindromo(String str);
}

Implemente uma expressão lambda que recebe uma lista de inteiros e retorna uma nova lista onde cada número foi multiplicado por 3. Dica: a função replaceAll, das Collections, recebe uma interface funcional como parâmetro, assim como vimos na função forEach.

public class Principal {
    public static void main(String[] args) {
        List<Integer> numeros = new ArrayList<>(List.of(2, 3, 4, 5, 6, 7));

        numeros.replaceAll(n -> n*3);

        System.out.println(numeros);
    }
}

Crie uma expressão lambda que ordene uma lista de strings em ordem alfabética. Dica: a função sort, das Collections, recebe uma interface funcional como parâmetro, assim como vimos na função forEach.

public class Principal {
    public static void main(String[] args) {
        List<String> nomes = new ArrayList<>(
                List.of("Carlos", "Ana Maria", "Bárbara", "Joana")
        );

        Ordenador ordenador = (a, b) -> a.compareTo(b);

        nomes.sort((a, b) -> ordenador.comparar(a, b));

        nomes.forEach(System.out::println);
    }
}
@FunctionalInterface
public interface Ordenador {
    int comparar(String s1, String s2);
}

** Crie uma função lambda que recebe dois números e divide o primeiro pelo segundo. A função deve lançar uma exceção de tipo ArithmeticException se o divisor for zero.**

public class Principal {
    public static void main(String[] args) {
        Divisao div = (a, b) -> {
            if (b == 0){
                throw new ArithmeticException("Divisão por zero não é permitida");
            }
            return a/b;
        };
        System.out.println(div.Divisao(5,2));
    }
}
@FunctionalInterface
public interface Divisao {
    double Divisao(double a, double b);
}
1 resposta

Olá, Barbara! Tudo bem?

Como este tópico parece ser uma duplicata do anterior, reforço aqui as dicas que comentei lá!

Só o pequeno ajuste no System.out.println(resuldado); (o correto é resultado) no primeiro exercício.

Bons estudos!

Sucesso

Imagem da comunidade