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);
}
}