O que esperar de lambda no Java 8? Parte 2

lambda
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