Na primeira parte realizei um introdutório a expressões lambda.
Expressões lambdas deixam a linguagem Java mais poderosa, legível e concisa.
É possível com lambdas passar o comportamento desejado, não somente valores, tornando o código mais genérico e flexível.
Tendo a lista de números abaixo:
List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5, 6);
Para somar todos os valores da lista em um código Java, realizaríamos uma implementação semelhante abaixo:
public int somaTodos(List<Integer> numeros) { int total = 0; for (int numero : numeros) { total += numero; } return total; }
Se depois alguém requisitar para alterar o código que soma todos números pares precisaríamos alterar a implementação acima para algo como:
public int somaTodos(List<Integer> numeros) { int total = 0; for (int numero : numeros) { if (numero % 2 == 0) { total += numero; } } return total; }
Em lambda teríamos algo mais genérico, que passando um comportamento utilizaríamos o mesmo “método” para o primeiro caso.
somaTodos(numeros, n -> true);
E para a última regra requisitada:
somaTodos(numeros, n -> n % 2 == 0);
Concluindo, passamos um comportamento lambda para obter a somatória dos valores baseado em uma condição parametrizada.
Abraços,
André Rezende