0
respostas

[Projeto] Desafio Lambdas

Olá!

Seguem minhas resoluções:

  • Interfaces criadas para o projeto:
public interface Dividir {

    public int dividir(int a, int b);
}
public interface Maiuscula {

    public String transformarEmMaiscula (String s);
}
public interface Multiplicar {

    public  int multiplicacao(int a, int b);
}
public interface Palindromo {

    public boolean verificarPalindromo(String str);
}
public interface Primo {

    public boolean VerificarPrimo(int c);

}
  • Aplicações:
import java.lang.reflect.Array;
import java.util.*;
import java.util.stream.Collector;
import java.util.stream.Collectors;

public class Main{

    public static void main(String[] args) {
        //1 - 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).

    Multiplicar m = ((a, b) -> a * b);
   int n =  m.multiplicacao(6,2);
        System.out.println(n);

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

        Primo p = ( c) -> {
            if (c <= 1 ) {
                return false;
            }
            for (int i = 2; i <= Math.sqrt(c);i++){
                if (c % i == 0) {
                    return false;
                }
            }
            return true;
        };
        Boolean verificacao = p.VerificarPrimo(3);
        System.out.println(verificacao);
// 3 - Crie uma função lambda que receba uma string e a converta para letras maiúsculas.

        Maiuscula o = (s -> s.toUpperCase());
        String maiuscula =  o.transformarEmMaiscula("victor");
        System.out.println(maiuscula);

//        4 - 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.

Palindromo q = (str) ->{
    StringBuilder sb = new StringBuilder(str);
    String invertida = String.valueOf(sb.reverse());
    return str.equals(invertida);
        };
        System.out.println(q.verificarPalindromo("ovo"));
        System.out.println(q.verificarPalindromo("faca"));

//        5 - 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.

        List<Integer> numeros = Arrays.asList(2,5,9,8);
       numeros.stream()
               .map(v -> v * 3)
               .forEach(System.out::println);

//        6 - 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.

        List<String> alfabetica = Arrays.asList("bússola", "eclipse", "almofada", "névoa", "carvalho", "xilofone");
        alfabetica.sort((a, b) -> a.compareTo(b));
        System.out.println(alfabetica);

//        7 - 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.

        Dividir d = (a, b) -> {
            if(b == 0) {
                throw new ArithmeticException("Divisor não pode ser zero");

            }
            return a / b;
        };

int i = d.dividir(6,2);
        System.out.println(i);

   }
}