- 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).
@FunctionalInterface
interface Multiplicacao {
int multiplicacao(int a, int b);
}
Multiplicacao multiplica = (a, b) -> a * b;
System.out.println("Multiplicação de 5 x 2 = " + multiplica.multiplicacao(5,2));
- Implemente uma expressão lambda que verifique se um número é primo.
@FunctionalInterface
interface Primo{
boolean ehprimo(int n);
}
Primo 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("2 é um numero primo? "+ primo.ehprimo(2));
System.out.println("4 é um numero primo? "+ primo.ehprimo(4));
- Crie uma função lambda que receba uma string e a converta para letras maiúsculas.
@FunctionalInterface
interface PalavraUpper{
String Maisculo(String palavra);
}
PalavraUpper palavra = p -> p.toUpperCase();
System.out.println(palavra.Maisculo("Arabela"));
- 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.
@FunctionalInterface
interface PalavraPalindromo{
boolean palindromo(String palavra);
PalavraPalindromo pali = p -> p.equals(new StringBuilder(p).reverse().toString());
System.out.println("Estas Palavras são palindromas: ");
System.out.println("Azul = " + pali.palindromo("azul"));
System.out.println("1001 = " + pali.palindromo("1001"));
- 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>inteiros = Arrays.asList(1, 2, 3, 4, 5);
inteiros.replaceAll(i -> i*3);
System.out.println(inteiros);
- 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> nomes = Arrays.asList("Lucas", "Maria", "João", "Ana");
nomes.sort((a,b) -> a.compareTo(b));
nomes.forEach(p -> System.out.print(p+", "));
- 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.
interface Divisor {
int dividir(int a, int b) throws ArithmeticException;
}
Divisor dividir = (num1,num2) -> {
if(num2==0) throw new ArithmeticException("Impossivel dividir por Zero!!!");
return num1/num2;
};
try {
System.out.println("Divisao de 4/2 = " + dividir.dividir(4,2));
System.out.println("Divisao de 12/0 = " + dividir.dividir(12,0));
}catch (ArithmeticException e){
System.out.println(e.getMessage());
}