Como usar a lógica if/else no Java 8 Streams

Como usar a lógica if / else no Java 8 Streams

1. Visão geral

Neste tutorial, vamos demonstrar como implementar a lógica if / else com Java 8Streams. Como parte do tutorial, criaremos um algoritmo simples para identificar números ímpares e pares.

Podemos dar uma olhada emthis article para nos atualizar sobre os fundamentos do Java 8Stream.

2. Lógica convencionalif/else dentro deforEach()

Em primeiro lugar, vamos criar umInteger Liste usar a lógica if / else convencional dentro do métodoforEach() do streamInteger:

List ints = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

ints.stream()
    .forEach(i -> {
        if (i.intValue() % 2 == 0) {
            Assert.assertTrue(i.intValue() % 2 == 0);
        } else {
            Assert.assertTrue(i.intValue() % 2 != 0);
        }
    });

Our forEach method contains if-else logic which verifies whether the Integer is an odd or even number usando o operador de módulo Java.

3. Lógica deif/else comfilter()

Em segundo lugar, vamos ver uma implementação mais elegante usando o métodoStream filter():

Stream evenIntegers = ints.stream()
    .filter(i -> i.intValue() % 2 == 0);
Stream oddIntegers = ints.stream()
    .filter(i -> i.intValue() % 2 != 0);

evenIntegers.forEach(i -> Assert.assertTrue(i.intValue() % 2 == 0));
oddIntegers.forEach(i -> Assert.assertTrue(i.intValue() % 2 != 0));

Acima, implementamos a lógica if / else usando o métodoStream filter()to separate the Integer List into two Streams, one for even integers and another for odd integers.

4. Conclusão

Neste artigo rápido, exploramos como criar um Java 8Stream e como implementar a lógica if / else usando o métodoforEach().

Além disso, aprendemos a usar o métodoStream filter para obter um resultado semelhante, de forma mais elegante.

Finalmente, o código-fonte completo usado neste tutorial está disponívelover on Github.